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

Table: Add colors block support #30791

Merged
merged 2 commits into from
Apr 27, 2021
Merged

Conversation

aaronrobertshaw
Copy link
Contributor

Description

Replace ad-hoc background color selection for tables with colors block support.

  • Allows selection of text and background colors
  • With recent feature to skip serialization of block support classes/styles, this can now target the table element as required
  • Previous color selections are migrated via a deprecation to the appropriate style attribute
  • Includes updated fixture tests

How has this been tested?

Manually and via fixtures tests using npm run test-unit

Test Instructions

  1. Create a new post, add a table block and select a background color for the table
  2. Save the post
  3. Checkout this PR branch, rebuild, then reload the editor
  4. Confirm the table block migrated successfully and the previous color selection is still present
  5. Select the table block and modify the background and font colors
  6. Save post and confirm selections are rendered correctly on the frontend

Screenshots

Types of changes

New feature.

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • I've tested my changes with keyboard and screen readers.
  • 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 (please manually search all *.native.js files for terms that need renaming or removal).

@aaronrobertshaw aaronrobertshaw added [Block] Table Affects the Table Block [Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi labels Apr 13, 2021
@aaronrobertshaw aaronrobertshaw self-assigned this Apr 13, 2021
@aaronrobertshaw
Copy link
Contributor Author

@nosolosw Do you have any thoughts on standardising retrieval of block support provided classes and styles when we are leveraging the "skip serialisation" feature?

With the ability to pick and choose which inner elements we apply these block support props to, it seems like something we'll be doing more of in the near future. In this PR's case, I've leveraged the util from the button block that was extracted from the colors block support hook.

@oandregal
Copy link
Member

@nosolosw Do you have any thoughts on standardising retrieval of block support provided classes and styles when we are leveraging the "skip serialisation" feature?

Yeah, we need that extracted to a utility. It seems this util can be something like __experimentalGetClassesAndStyleForColors. Somewhere in the block-editor/hooks should be a good place. I'd think this is best done in a separate PR before this one.

(Personally, as a reviewer, I welcome many small PRs rather than a big one. Small slots for reviews work best for me, as it allows me to help others while also advance my work without having to block half a day for a single review).

"color": {
"__experimentalSkipSerialization": true,
"gradients": true,
"link": false
Copy link
Member

@oandregal oandregal Apr 13, 2021

Choose a reason for hiding this comment

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

Probably not necessary at the moment as the existing getColorAndStyleProps doesn't process link color, but it brings the question: shouldn't it?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I believe the intent of the current getColorAndStyleProps was to only bring in what was needed for the button block. That happened to line up with what was needed here for the table block.

More than likely, a generic utility would need to take into account the current block's configuration of block supports.

@talldan talldan linked an issue Apr 13, 2021 that may be closed by this pull request
@talldan
Copy link
Contributor

talldan commented Apr 13, 2021

When testing this, will need to make sure the 'stripes' block style is well tested and works as expected. Also worth testing with table headers and footers active.

I did a quick test, and looks like text color doesn't seem to work for 'stripes'.

@aaronrobertshaw
Copy link
Contributor Author

Yeah, we need that extracted to a utility. It seems this util can be something like __experimentalGetClassesAndStyleForColors. Somewhere in the block-editor/hooks should be a good place. I'd think this is best done in a separate PR before this one.

My thinking was as more block support features are implemented and there are more cases of skipping serialization. Having a utility to retrieve the css classes and inline styles across block support features would be good if possible.

__experimentalGetBlockSupportClassesAndStyles( [ 'colors', 'border' ] )

That might be over-the-top though in hindsight.

(Personally, as a reviewer, I welcome many small PRs rather than a big one. Small slots for reviews work best for me, as it allows me to help others while also advance my work without having to block half a day for a single review).

I'm happy to create a couple of PRs, extracting getColorAndStyleProps into a utility in block-editor/hooks, one to update the button block accordingly, then updating this as well.

@aaronrobertshaw
Copy link
Contributor Author

I did a quick test, and looks like text color doesn't seem to work for 'stripes'.

@talldan Any chance you can let me know which theme you were using when you tested?

The "stripes" block style works ok for me with the custom colors. When you found it not to work, was that related to the arbitrary background color for the striped rows clashing with a selected text color?

TableColors-2

@talldan
Copy link
Contributor

talldan commented Apr 15, 2021

@aaronrobertshaw I did some further testing, and I'm seeing that text colors don't work when a background color is selected with the stripes style:
table-colors

Using Twenty Twenty One. I think it's a theme issue, it works ok with editor theme styles disabled in the settings. Is that something you can see as well? If so, it'd be good to follow up with a trac ticket.

@aaronrobertshaw
Copy link
Contributor Author

Using Twenty Twenty One. I think it's a theme issue, it works ok with editor theme styles disabled in the settings. Is that something you can see as well? If so, it'd be good to follow up with a trac ticket.

From memory, I was likely using the TT1 Blocks theme. At least thats the first explanation that comes to mind as the GIF in my previous comment shows the font colors being applied correctly both in the editor and frontend.

The standard Twenty Twenty One theme may not be qualifying for the has-<color>-text-color classes to be generated. The getColorAndStyleProps function currently forces inline styles for the colors in the editor.

I'll test further and see if I can confirm that.

@aaronrobertshaw
Copy link
Contributor Author

After further testing, I found two themes that introduced conflicting styles preventing the selected table colors from displaying correctly. These themes were:

  • TwentyTwentyOne
  • Maywood

TableColors-ThemeIssue

In other themes, the text color was displayed correctly in both the editor and the frontend. These themes included:

  • TT1 Blocks (block based TwentyTwentyOne)
  • TwentyTwenty
  • TwentyTwenty (block based)
  • Q
  • Varia
  • Seedlet
  • Hever

If so, it'd be good to follow up with a trac ticket.

If the approach to applying block support styles in this PR is accepted I can create any trac tickets needed so themes get updated to honour users' color selections.

Copy link
Contributor

@talldan talldan left a comment

Choose a reason for hiding this comment

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

Thanks for investigating those issues. Would be great to follow up with trac tickets.

The changes here look good, and users will be very happy to see this shipped. Nice work 🎉

@talldan
Copy link
Contributor

talldan commented Apr 15, 2021

To get this merged, looks like it may require a rebase and reformat of the json files as per #30714.

@aaronrobertshaw aaronrobertshaw force-pushed the add/table-colors-block-support branch from ada219b to ec0b6d5 Compare April 15, 2021 11:14
@aaronrobertshaw aaronrobertshaw changed the base branch from trunk to add/color-block-support-utilities April 15, 2021 11:14
@aaronrobertshaw
Copy link
Contributor Author

The changes here look good, and users will be very happy to see this shipped. Nice work 🎉
To get this merged, looks like it may require a rebase and reformat of the json files as per #30714.

Thanks for all the effort on the reviews 👍

As part of addressing the earlier suggestion to move the getColorAndStyleProps function into a new utility available via the block support hooks, I've rebased and updated this PR to utilise that. #30869

My apologies for the updates post approval!

@github-actions
Copy link

github-actions bot commented Apr 15, 2021

Size Change: +96 B (0%)

Total Size: 1.39 MB

Filename Size Change
build/block-library/index.js 142 kB +96 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.12 kB 0 B
build/annotations/index.js 2.93 kB 0 B
build/api-fetch/index.js 2.42 kB 0 B
build/autop/index.js 2.28 kB 0 B
build/blob/index.js 672 B 0 B
build/block-directory/index.js 6.6 kB 0 B
build/block-directory/style-rtl.css 993 B 0 B
build/block-directory/style.css 995 B 0 B
build/block-editor/index.js 116 kB 0 B
build/block-editor/style-rtl.css 13 kB 0 B
build/block-editor/style.css 13 kB 0 B
build/block-library/blocks/archives/editor-rtl.css 61 B 0 B
build/block-library/blocks/archives/editor.css 60 B 0 B
build/block-library/blocks/audio/editor-rtl.css 58 B 0 B
build/block-library/blocks/audio/editor.css 58 B 0 B
build/block-library/blocks/audio/style-rtl.css 112 B 0 B
build/block-library/blocks/audio/style.css 112 B 0 B
build/block-library/blocks/block/editor-rtl.css 161 B 0 B
build/block-library/blocks/block/editor.css 161 B 0 B
build/block-library/blocks/button/editor-rtl.css 475 B 0 B
build/block-library/blocks/button/editor.css 474 B 0 B
build/block-library/blocks/button/style-rtl.css 501 B 0 B
build/block-library/blocks/button/style.css 500 B 0 B
build/block-library/blocks/buttons/editor-rtl.css 315 B 0 B
build/block-library/blocks/buttons/editor.css 315 B 0 B
build/block-library/blocks/buttons/style-rtl.css 368 B 0 B
build/block-library/blocks/buttons/style.css 368 B 0 B
build/block-library/blocks/calendar/style-rtl.css 208 B 0 B
build/block-library/blocks/calendar/style.css 208 B 0 B
build/block-library/blocks/categories/editor-rtl.css 84 B 0 B
build/block-library/blocks/categories/editor.css 83 B 0 B
build/block-library/blocks/categories/style-rtl.css 79 B 0 B
build/block-library/blocks/categories/style.css 79 B 0 B
build/block-library/blocks/code/style-rtl.css 90 B 0 B
build/block-library/blocks/code/style.css 90 B 0 B
build/block-library/blocks/columns/editor-rtl.css 190 B 0 B
build/block-library/blocks/columns/editor.css 190 B 0 B
build/block-library/blocks/columns/style-rtl.css 422 B 0 B
build/block-library/blocks/columns/style.css 422 B 0 B
build/block-library/blocks/cover/editor-rtl.css 603 B 0 B
build/block-library/blocks/cover/editor.css 604 B 0 B
build/block-library/blocks/cover/style-rtl.css 1.22 kB 0 B
build/block-library/blocks/cover/style.css 1.22 kB 0 B
build/block-library/blocks/embed/editor-rtl.css 486 B 0 B
build/block-library/blocks/embed/editor.css 486 B 0 B
build/block-library/blocks/embed/style-rtl.css 401 B 0 B
build/block-library/blocks/embed/style.css 400 B 0 B
build/block-library/blocks/file/editor-rtl.css 301 B 0 B
build/block-library/blocks/file/editor.css 300 B 0 B
build/block-library/blocks/file/frontend.js 773 B 0 B
build/block-library/blocks/file/style-rtl.css 255 B 0 B
build/block-library/blocks/file/style.css 255 B 0 B
build/block-library/blocks/freeform/editor-rtl.css 2.45 kB 0 B
build/block-library/blocks/freeform/editor.css 2.45 kB 0 B
build/block-library/blocks/gallery/editor-rtl.css 704 B 0 B
build/block-library/blocks/gallery/editor.css 705 B 0 B
build/block-library/blocks/gallery/style-rtl.css 1.06 kB 0 B
build/block-library/blocks/gallery/style.css 1.05 kB 0 B
build/block-library/blocks/group/editor-rtl.css 160 B 0 B
build/block-library/blocks/group/editor.css 160 B 0 B
build/block-library/blocks/group/style-rtl.css 57 B 0 B
build/block-library/blocks/group/style.css 57 B 0 B
build/block-library/blocks/heading/editor-rtl.css 129 B 0 B
build/block-library/blocks/heading/editor.css 129 B 0 B
build/block-library/blocks/heading/style-rtl.css 76 B 0 B
build/block-library/blocks/heading/style.css 76 B 0 B
build/block-library/blocks/html/editor-rtl.css 281 B 0 B
build/block-library/blocks/html/editor.css 281 B 0 B
build/block-library/blocks/image/editor-rtl.css 717 B 0 B
build/block-library/blocks/image/editor.css 716 B 0 B
build/block-library/blocks/image/style-rtl.css 476 B 0 B
build/block-library/blocks/image/style.css 478 B 0 B
build/block-library/blocks/latest-comments/style-rtl.css 281 B 0 B
build/block-library/blocks/latest-comments/style.css 282 B 0 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B 0 B
build/block-library/blocks/latest-posts/editor.css 137 B 0 B
build/block-library/blocks/latest-posts/style-rtl.css 523 B 0 B
build/block-library/blocks/latest-posts/style.css 522 B 0 B
build/block-library/blocks/legacy-widget/editor-rtl.css 557 B 0 B
build/block-library/blocks/legacy-widget/editor.css 557 B 0 B
build/block-library/blocks/list/style-rtl.css 63 B 0 B
build/block-library/blocks/list/style.css 63 B 0 B
build/block-library/blocks/media-text/editor-rtl.css 176 B 0 B
build/block-library/blocks/media-text/editor.css 176 B 0 B
build/block-library/blocks/media-text/style-rtl.css 492 B 0 B
build/block-library/blocks/media-text/style.css 489 B 0 B
build/block-library/blocks/more/editor-rtl.css 434 B 0 B
build/block-library/blocks/more/editor.css 434 B 0 B
build/block-library/blocks/navigation-link/editor-rtl.css 597 B 0 B
build/block-library/blocks/navigation-link/editor.css 597 B 0 B
build/block-library/blocks/navigation-link/style-rtl.css 1.17 kB 0 B
build/block-library/blocks/navigation-link/style.css 1.17 kB 0 B
build/block-library/blocks/navigation/editor-rtl.css 1.19 kB 0 B
build/block-library/blocks/navigation/editor.css 1.19 kB 0 B
build/block-library/blocks/navigation/style-rtl.css 272 B 0 B
build/block-library/blocks/navigation/style.css 271 B 0 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B 0 B
build/block-library/blocks/nextpage/editor.css 395 B 0 B
build/block-library/blocks/page-list/editor-rtl.css 239 B 0 B
build/block-library/blocks/page-list/editor.css 240 B 0 B
build/block-library/blocks/page-list/style-rtl.css 167 B 0 B
build/block-library/blocks/page-list/style.css 167 B 0 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B 0 B
build/block-library/blocks/paragraph/editor.css 157 B 0 B
build/block-library/blocks/paragraph/style-rtl.css 247 B 0 B
build/block-library/blocks/paragraph/style.css 248 B 0 B
build/block-library/blocks/post-author/editor-rtl.css 209 B 0 B
build/block-library/blocks/post-author/editor.css 209 B 0 B
build/block-library/blocks/post-author/style-rtl.css 183 B 0 B
build/block-library/blocks/post-author/style.css 184 B 0 B
build/block-library/blocks/post-comments-form/style-rtl.css 250 B 0 B
build/block-library/blocks/post-comments-form/style.css 250 B 0 B
build/block-library/blocks/post-content/editor-rtl.css 139 B 0 B
build/block-library/blocks/post-content/editor.css 139 B 0 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B 0 B
build/block-library/blocks/post-excerpt/editor.css 73 B 0 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B 0 B
build/block-library/blocks/post-excerpt/style.css 69 B 0 B
build/block-library/blocks/post-featured-image/editor-rtl.css 338 B 0 B
build/block-library/blocks/post-featured-image/editor.css 338 B 0 B
build/block-library/blocks/post-featured-image/style-rtl.css 100 B 0 B
build/block-library/blocks/post-featured-image/style.css 100 B 0 B
build/block-library/blocks/post-title/style-rtl.css 60 B 0 B
build/block-library/blocks/post-title/style.css 60 B 0 B
build/block-library/blocks/preformatted/style-rtl.css 103 B 0 B
build/block-library/blocks/preformatted/style.css 103 B 0 B
build/block-library/blocks/pullquote/editor-rtl.css 183 B 0 B
build/block-library/blocks/pullquote/editor.css 183 B 0 B
build/block-library/blocks/pullquote/style-rtl.css 318 B 0 B
build/block-library/blocks/pullquote/style.css 318 B 0 B
build/block-library/blocks/query-loop/editor-rtl.css 83 B 0 B
build/block-library/blocks/query-loop/editor.css 82 B 0 B
build/block-library/blocks/query-loop/style-rtl.css 315 B 0 B
build/block-library/blocks/query-loop/style.css 317 B 0 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B 0 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B 0 B
build/block-library/blocks/query-pagination/editor-rtl.css 270 B 0 B
build/block-library/blocks/query-pagination/editor.css 262 B 0 B
build/block-library/blocks/query-pagination/style-rtl.css 168 B 0 B
build/block-library/blocks/query-pagination/style.css 168 B 0 B
build/block-library/blocks/query-title/editor-rtl.css 86 B 0 B
build/block-library/blocks/query-title/editor.css 86 B 0 B
build/block-library/blocks/query/editor-rtl.css 131 B 0 B
build/block-library/blocks/query/editor.css 132 B 0 B
build/block-library/blocks/quote/style-rtl.css 169 B 0 B
build/block-library/blocks/quote/style.css 169 B 0 B
build/block-library/blocks/rss/editor-rtl.css 201 B 0 B
build/block-library/blocks/rss/editor.css 202 B 0 B
build/block-library/blocks/rss/style-rtl.css 290 B 0 B
build/block-library/blocks/rss/style.css 290 B 0 B
build/block-library/blocks/search/editor-rtl.css 189 B 0 B
build/block-library/blocks/search/editor.css 189 B 0 B
build/block-library/blocks/search/style-rtl.css 359 B 0 B
build/block-library/blocks/search/style.css 362 B 0 B
build/block-library/blocks/separator/editor-rtl.css 99 B 0 B
build/block-library/blocks/separator/editor.css 99 B 0 B
build/block-library/blocks/separator/style-rtl.css 251 B 0 B
build/block-library/blocks/separator/style.css 251 B 0 B
build/block-library/blocks/shortcode/editor-rtl.css 512 B 0 B
build/block-library/blocks/shortcode/editor.css 512 B 0 B
build/block-library/blocks/site-logo/editor-rtl.css 440 B 0 B
build/block-library/blocks/site-logo/editor.css 441 B 0 B
build/block-library/blocks/site-logo/style-rtl.css 154 B 0 B
build/block-library/blocks/site-logo/style.css 154 B 0 B
build/block-library/blocks/social-link/editor-rtl.css 164 B 0 B
build/block-library/blocks/social-link/editor.css 165 B 0 B
build/block-library/blocks/social-links/editor-rtl.css 796 B 0 B
build/block-library/blocks/social-links/editor.css 795 B 0 B
build/block-library/blocks/social-links/style-rtl.css 1.32 kB 0 B
build/block-library/blocks/social-links/style.css 1.33 kB 0 B
build/block-library/blocks/spacer/editor-rtl.css 308 B 0 B
build/block-library/blocks/spacer/editor.css 308 B 0 B
build/block-library/blocks/spacer/style-rtl.css 48 B 0 B
build/block-library/blocks/spacer/style.css 48 B 0 B
build/block-library/blocks/table/editor-rtl.css 478 B 0 B
build/block-library/blocks/table/editor.css 478 B 0 B
build/block-library/blocks/table/style-rtl.css 407 B 0 B
build/block-library/blocks/table/style.css 407 B 0 B
build/block-library/blocks/tag-cloud/editor-rtl.css 118 B 0 B
build/block-library/blocks/tag-cloud/editor.css 118 B 0 B
build/block-library/blocks/tag-cloud/style-rtl.css 94 B 0 B
build/block-library/blocks/tag-cloud/style.css 94 B 0 B
build/block-library/blocks/template-part/editor-rtl.css 551 B 0 B
build/block-library/blocks/template-part/editor.css 550 B 0 B
build/block-library/blocks/term-description/editor-rtl.css 90 B 0 B
build/block-library/blocks/term-description/editor.css 90 B 0 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B 0 B
build/block-library/blocks/text-columns/editor.css 95 B 0 B
build/block-library/blocks/text-columns/style-rtl.css 166 B 0 B
build/block-library/blocks/text-columns/style.css 166 B 0 B
build/block-library/blocks/verse/style-rtl.css 87 B 0 B
build/block-library/blocks/verse/style.css 87 B 0 B
build/block-library/blocks/video/editor-rtl.css 569 B 0 B
build/block-library/blocks/video/editor.css 570 B 0 B
build/block-library/blocks/video/style-rtl.css 169 B 0 B
build/block-library/blocks/video/style.css 169 B 0 B
build/block-library/common-rtl.css 1.31 kB 0 B
build/block-library/common.css 1.31 kB 0 B
build/block-library/editor-rtl.css 9.53 kB 0 B
build/block-library/editor.css 9.52 kB 0 B
build/block-library/reset-rtl.css 506 B 0 B
build/block-library/reset.css 507 B 0 B
build/block-library/style-rtl.css 9.46 kB 0 B
build/block-library/style.css 9.46 kB 0 B
build/block-library/theme-rtl.css 692 B 0 B
build/block-library/theme.css 693 B 0 B
build/block-serialization-default-parser/index.js 1.3 kB 0 B
build/block-serialization-spec-parser/index.js 3.06 kB 0 B
build/blocks/index.js 46.6 kB 0 B
build/components/index.js 270 kB 0 B
build/components/style-rtl.css 16.3 kB 0 B
build/components/style.css 16.3 kB 0 B
build/compose/index.js 9.97 kB 0 B
build/core-data/index.js 12 kB 0 B
build/customize-widgets/index.js 5.79 kB 0 B
build/customize-widgets/style-rtl.css 666 B 0 B
build/customize-widgets/style.css 667 B 0 B
build/data-controls/index.js 825 B 0 B
build/data/index.js 7.55 kB 0 B
build/date/index.js 31.8 kB 0 B
build/deprecated/index.js 738 B 0 B
build/dom-ready/index.js 577 B 0 B
build/dom/index.js 4.61 kB 0 B
build/edit-navigation/index.js 13.3 kB 0 B
build/edit-navigation/style-rtl.css 2.84 kB 0 B
build/edit-navigation/style.css 2.85 kB 0 B
build/edit-post/classic-rtl.css 454 B 0 B
build/edit-post/classic.css 454 B 0 B
build/edit-post/index.js 335 kB 0 B
build/edit-post/style-rtl.css 6.95 kB 0 B
build/edit-post/style.css 6.93 kB 0 B
build/edit-site/index.js 25.2 kB 0 B
build/edit-site/style-rtl.css 4.9 kB 0 B
build/edit-site/style.css 4.89 kB 0 B
build/edit-widgets/index.js 13 kB 0 B
build/edit-widgets/style-rtl.css 2.98 kB 0 B
build/edit-widgets/style.css 2.98 kB 0 B
build/editor/index.js 60.5 kB 0 B
build/editor/style-rtl.css 3.9 kB 0 B
build/editor/style.css 3.9 kB 0 B
build/element/index.js 3.44 kB 0 B
build/escape-html/index.js 739 B 0 B
build/format-library/index.js 5.67 kB 0 B
build/format-library/style-rtl.css 637 B 0 B
build/format-library/style.css 639 B 0 B
build/hooks/index.js 1.76 kB 0 B
build/html-entities/index.js 628 B 0 B
build/i18n/index.js 3.73 kB 0 B
build/is-shallow-equal/index.js 710 B 0 B
build/keyboard-shortcuts/index.js 1.65 kB 0 B
build/keycodes/index.js 1.43 kB 0 B
build/list-reusable-blocks/index.js 2.07 kB 0 B
build/list-reusable-blocks/style-rtl.css 629 B 0 B
build/list-reusable-blocks/style.css 628 B 0 B
build/media-utils/index.js 3.08 kB 0 B
build/notices/index.js 1.07 kB 0 B
build/nux/index.js 2.31 kB 0 B
build/nux/style-rtl.css 718 B 0 B
build/nux/style.css 716 B 0 B
build/plugins/index.js 2 kB 0 B
build/primitives/index.js 1.03 kB 0 B
build/priority-queue/index.js 790 B 0 B
build/react-i18n/index.js 924 B 0 B
build/redux-routine/index.js 2.82 kB 0 B
build/reusable-blocks/index.js 2.56 kB 0 B
build/reusable-blocks/style-rtl.css 225 B 0 B
build/reusable-blocks/style.css 225 B 0 B
build/rich-text/index.js 11.7 kB 0 B
build/server-side-render/index.js 1.64 kB 0 B
build/shortcode/index.js 1.69 kB 0 B
build/token-list/index.js 847 B 0 B
build/url/index.js 1.95 kB 0 B
build/viewport/index.js 1.28 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.24 kB 0 B

compressed-size-action

Base automatically changed from add/color-block-support-utilities to trunk April 16, 2021 05:16
@aaronrobertshaw aaronrobertshaw requested a review from talldan April 19, 2021 06:33
@talldan
Copy link
Contributor

talldan commented Apr 19, 2021

My apologies for the updates post approval!

No worries! I think you could've merged and then followed up with the other change in another PR, but it's ok to do it this way as well.

I'm not all that familiar with the support hook, so would appreciate if @nosolosw could give the thumbs up to that change.

@aaronrobertshaw
Copy link
Contributor Author

Thanks for taking another look at this one 👍

I'm not all that familiar with the support hook, so would appreciate if @nosolosw could give the thumbs up to that change.

The color block support utilities have now been merged as well as updates to the button block to use them. Hopefully, this should only need a quick rubber stamp from here.

packages/block-library/src/table/edit.js Show resolved Hide resolved
// As the previous arbitrary colors won't match theme color palettes, the hex
// value will be mapped to the style.color.background attribute as if it was
// a custom color selection.
const oldColors = {
Copy link
Member

Choose a reason for hiding this comment

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

We are making every table block that exists use inline styles instead of a color class. But we will still need to keep the old classes so the blocks properly work on the frontend even if they are never opened on the editor.

Could we leave the attributes as they were instead (keeping the classes and named attributes)? I guess we could keep the old colors as the default table block palette on lib/experimental-default-theme.json. Given that the classes still exist and will always be preset I guess the blocks should still look ok without any migration.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

We are making every table block that exists use inline styles instead of a color class. But we will still need to keep the old classes so the blocks properly work on the frontend even if they are never opened on the editor.

If the block's are not opened in the editor and therefore not migrated. They would still keep the old CSS classes. This is why those classes still exist within the style.css file.

Could we leave the attributes as they were instead (keeping the classes and named attributes)? I guess we could keep the old colors as the default table block palette on lib/experimental-default-theme.json. Given that the classes still exist and will always be preset I guess the blocks should still look ok without any migration.

If the table block is given its own custom color palette, as you suggested, with the old colors under the same names, their CSS classes should be unchanged. With that approach, the original backgroundColor attribute could remain as is, instead of migrating it to the style.color.background attribute.

value: backgroundColor.color,
onChange: setBackgroundColor,
label: __( 'Background color' ),
disableCustomColors: true,
Copy link
Member

Choose a reason for hiding this comment

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

Previously custom colors were intentionally disabled for the table block. This PR enables custom colors for the table block. Is this change intentional? Should we keep them disabled using lib/experimental-default-theme.json?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

With the adoption of the colors block support increasing the user's control over colors including font color, it seemed like this was the preferred direction to go. More so when taking into account some of the conversation in #19659.

@aaronrobertshaw
Copy link
Contributor Author

Thank you for the great feedback @jorgefilipecosta 👍

It would be great to get some input from others regarding whether we should maintain a custom color palette for the table block as suggested as well as allow custom colors. @talldan and @nosolosw do you have any ideas or preferences on this?

@talldan
Copy link
Contributor

talldan commented Apr 21, 2021

I would defer to the conversation on #19659, where it has been made very clear that the current limited palette is a problem for users.

See @kjellr's comment here:
#19659 (comment)

I think this PR would be a good first step, but there are additional challenges that I think it would be good to devote some time to solving:

  • Users can't specify different colors for table headers and footers, which is a pretty common thing to do.
  • The striped style generally causes contrast issues, since the table has two background colors when this is active, but the user can only specify one of those background colors and one text color. Generally it's easiest to go for a lighter background color, but themes often don't provide a decent range of options.

@oandregal
Copy link
Member

In terms of how this uses the block supports: it's fine, although it looks like we need to rebase to get the latest utilities (and remove those changes from this PR).

I suggested at #30791 (comment) that we start only with background for this PR (which works as of today, just with more theme colors) and tackle text/border separately.

@oandregal
Copy link
Member

oandregal commented Apr 26, 2021

By the way, I've noticed the dropdown for the default style looks a bit odd (both Firefox and Chrome on Linux):

Captura de ecrã de 2021-04-26 16-22-52

@aaronrobertshaw aaronrobertshaw force-pushed the add/table-colors-block-support branch from ec0b6d5 to 09766a1 Compare April 27, 2021 07:08
@aaronrobertshaw aaronrobertshaw force-pushed the add/table-colors-block-support branch from 09766a1 to 86f6423 Compare April 27, 2021 07:22
@aaronrobertshaw
Copy link
Contributor Author

By the way, I've noticed the dropdown for the default style looks a bit odd (both Firefox and Chrome on Linux):

Unfortunately, I don't have a Linux VM handy at the moment to test. It appears OK for me across browsers under Mac and Windows using a few different themes.

Is it just this PR you noticed the issue with and is it still an issue after the rebase?

@oandregal
Copy link
Member

Is it just this PR you noticed the issue with and is it still an issue after the rebase?

Oh, sorry, hadn't tested on trunk: I just did and it also happens over there.

Copy link
Member

@oandregal oandregal left a comment

Choose a reason for hiding this comment

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

Tested this a bit and works as expected (tested deprecations with old colors and are properly migrated to the new system). From the point of view of the block supports, it's also ready to land.

@aaronrobertshaw aaronrobertshaw merged commit 3760fd7 into trunk Apr 27, 2021
@aaronrobertshaw aaronrobertshaw deleted the add/table-colors-block-support branch April 27, 2021 23:44
@github-actions github-actions bot added this to the Gutenberg 10.6 milestone Apr 27, 2021
@aaronrobertshaw
Copy link
Contributor Author

I've created #31261 to track the desired follow ups mentioned in #30791 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Table Affects the Table Block [Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Improve background color options on table block
4 participants