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

Contrast Checker: check link color #38100

Merged
merged 11 commits into from
Feb 7, 2022

Conversation

ramonjd
Copy link
Member

@ramonjd ramonjd commented Jan 20, 2022

Resolves #24595

Description

Hi! Let's detect the color of an A tag and, if it exists, pass it to the <ConstrastChecker />

Jan-20-2022 15-29-40

There are WACG guidelines specifically for links:

For optimal accessibility and usability, maintain the underline on links. Otherwise two conditions must be met:

3:1 contrast between the body text and the link text.
A "visual cue" (not just a color change) that appears on mouse hover and keyboard focus. The most common way to meet this is to underline the link on hover and focus.

See: https://webaim.org/articles/contrast/#sc141

To keep things straight forward we're applying the same AA standard to links that we use for text. We can make our tests more stringent should the debate take us there.

How has this been tested?

Insert a Paragraph block, and some nested blocks that all have color controls, for example, a Paragraph block within a Group block.

Play with text, background and alpha colour controls in the Block Inspector sidebar.

👀 Here is some test content containing various scenarios:

Test blocks
<!-- wp:paragraph {"style":{"elements":{"link":{"color":{"text":"#161515"}}},"color":{"background":"#0f0e0e","text":"#f4f0f0"}}} -->
<p class="has-text-color has-background has-link-color" style="background-color:#0f0e0e;color:#f4f0f0">There's no link in this paragraph. The contrast checker should ignore any incoming link colors until there is one.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph {"style":{"elements":{"link":{"color":{"text":"#231111"}}},"color":{"text":"#090909","background":"#f8f5f5"}}} -->
<p class="has-text-color has-background has-link-color" style="background-color:#f8f5f5;color:#090909">Paragraph text and <a href="https://en.wikipedia.org/wiki/A_Thing_Called_Love_(song)"><em><strong>link with emphasis</strong></em></a> are readable against Paragraph background</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph {"style":{"elements":{"link":{"color":{"text":"#f4e9e9"}}},"color":{"text":"#090909","background":"#f8f5f5"}}} -->
<p class="has-text-color has-background has-link-color" style="background-color:#f8f5f5;color:#090909">Paragraph text is readable but a <a href="https://en.wikipedia.org/wiki/A_Thing_Called_Love_(song)"><em><strong>link with emphasis</strong></em></a> should trigger a contrast warning against Paragraph background</p>
<!-- /wp:paragraph -->

<!-- wp:group {"style":{"elements":{"link":{"color":{"text":"#f4b507"}}},"color":{"text":"#f6b707","background":"#060606"}}} -->
<div class="wp-block-group has-text-color has-background has-link-color" style="background-color:#060606;color:#f6b707"><!-- wp:columns {"style":{"color":{"background":"#173d3f"}}} -->
<div class="wp-block-columns has-background" style="background-color:#173d3f"><!-- wp:column {"style":{"spacing":{"padding":{"top":"39px","right":"39px","bottom":"39px","left":"39px"}}}} -->
<div class="wp-block-column" style="padding-top:39px;padding-right:39px;padding-bottom:39px;padding-left:39px"><!-- wp:group {"style":{"spacing":{"padding":{"top":"39px","right":"39px","bottom":"39px","left":"39px"}}}} -->
<div class="wp-block-group" style="padding-top:39px;padding-right:39px;padding-bottom:39px;padding-left:39px"><!-- wp:paragraph {"style":{"color":{"text":"#f7f6f6"}}} -->
<p class="has-text-color" style="color:#f7f6f6">Text and <a href="https://en.wikipedia.org/wiki/Ko-Ko_Joe">link</a> are readable against Column background.</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group --></div>
<!-- /wp:column --></div>
<!-- /wp:columns --></div>
<!-- /wp:group -->

<!-- wp:group {"style":{"spacing":{"padding":{"top":"22px","right":"22px","bottom":"22px","left":"22px"}},"color":{"background":"#183f42"}}} -->
<div class="wp-block-group has-background" style="background-color:#183f42;padding-top:22px;padding-right:22px;padding-bottom:22px;padding-left:22px"><!-- wp:paragraph {"style":{"color":{"text":"#080707"}}} -->
<p class="has-text-color" style="color:#080707">Paragraph text and Group background should trigger contrast warning.</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group -->

<!-- wp:group {"style":{"color":{"background":"#f56a06d4"}}} -->
<div class="wp-block-group has-background" style="background-color:#f56a06d4"><!-- wp:paragraph {"style":{"color":{"text":"#b9550d"},"elements":{"link":{"color":{"text":"#82532e"}}}}} -->
<p class="has-text-color has-link-color" style="color:#b9550d">Paragraph text and <a href="https://en.wikipedia.org/wiki/The_Bird_(Jerry_Reed_song)">link</a> on transparent Group background shouldn't trigger any warning.</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group -->

<!-- wp:group {"style":{"color":{"background":"#c83333"}}} -->
<div class="wp-block-group has-background" style="background-color:#c83333"><!-- wp:paragraph {"style":{"elements":{"link":{"color":{"text":"#f2efef"}}},"color":{"text":"#ffffffe3"}}} -->
<p class="has-text-color has-link-color" style="color:#ffffffe3">Paragraph transparent text and readable <a href="https://en.wikipedia.org/wiki/The_Bird_(Jerry_Reed_song)">link</a> on Group background should trigger transparency warning.</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group -->

<!-- wp:social-links {"iconColor":"pale-cyan-blue","iconColorValue":"#8ed1fc","iconBackgroundColor":"pale-cyan-blue","iconBackgroundColorValue":"#8ed1fc","className":"is-style-default"} -->
<ul class="wp-block-social-links has-icon-color has-icon-background-color is-style-default"><!-- wp:social-link {"url":"https://wordpress.org","service":"wordpress"} /-->

<!-- wp:social-link {"url":"https://wordpress.org","service":"chain"} /--></ul>
<!-- /wp:social-links -->

<!-- wp:navigation {"ref":340,"textColor":"foreground","backgroundColor":"highlight"} /-->

The contrast warning should show when:

Screen Shot 2022-01-24 at 3 25 20 pm

  • the background doesn't have transparency AND
  • the text or link color has no transparency AND poor contrast in relation to the background

The contrast warning should take priority over the transparency warning. That is, if the text color for example has poor contrast and the link color has transparency, the contrast warning will show.

The transparency warning should show when:

Screen Shot 2022-01-24 at 3 25 36 pm

  • the text or link color have decent contrast but one or both have transparency.
  • same as above but also if the background has transparency

Check the text as well. We can pass a description so contrast warnings will specify 'link' if a link triggers a warning.

Screen Shot 2022-02-05 at 8 15 58 am

The tests should cover the scenarios as well:

npm run test-unit packages/block-editor/src/components/contrast-checker/test/index.js

Known issues

This is an existing issue. I'm noting here so it doesn't distract from testing :)

The contrast checker will test and warn about unreadable global styles colors even though the user hasn't interacted with the panel. For example, if you have the following color definitions in your theme.json,

	"styles": {
		"color": {
			"background": "#ffffff",
			"text": "#ffffff"
		},
...

You'll see the warning as soon as you open the panel:

Screen Shot 2022-01-24 at 3 03 37 pm

Follow up work.

The Social Icons block tests icon colors and backgrounds. We could test passing an array of colors as a prop, as we did in 00e5e31 to get custom messages.

Screen Shot 2022-02-04 at 11 31 31 pm

I reverted 00e5e31 because I thought the changes were too sweeping and needed more testing across the app. We would have to update mobile as well.

Context

Related issue #37549
Discussed in #37731 (comment)
Global styles issue found in #35774 (comment)

Types of changes

Enhancing existing 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).
  • I've updated related schemas if appropriate.

@ramonjd ramonjd added [Type] Enhancement A suggestion for improvement. [Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi labels Jan 20, 2022
@ramonjd ramonjd self-assigned this Jan 20, 2022
@ramonjd ramonjd added the [Status] In Progress Tracking issues with work in progress label Jan 20, 2022
@github-actions
Copy link

github-actions bot commented Jan 20, 2022

Size Change: +270 B (0%)

Total Size: 1.14 MB

Filename Size Change
build/block-editor/index.min.js 141 kB +119 B (0%)
build/editor/index.min.js 38.6 kB +151 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 960 B
build/admin-manifest/index.min.js 1.1 kB
build/annotations/index.min.js 2.75 kB
build/api-fetch/index.min.js 2.22 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.28 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-editor/style-rtl.css 14.6 kB
build/block-editor/style.css 14.6 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 65 B
build/block-library/blocks/archives/style.css 65 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 111 B
build/block-library/blocks/audio/style.css 111 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 470 B
build/block-library/blocks/button/editor.css 470 B
build/block-library/blocks/button/style-rtl.css 560 B
build/block-library/blocks/button/style.css 560 B
build/block-library/blocks/buttons/editor-rtl.css 292 B
build/block-library/blocks/buttons/editor.css 292 B
build/block-library/blocks/buttons/style-rtl.css 275 B
build/block-library/blocks/buttons/style.css 275 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 90 B
build/block-library/blocks/code/style.css 90 B
build/block-library/blocks/code/theme-rtl.css 131 B
build/block-library/blocks/code/theme.css 131 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 406 B
build/block-library/blocks/columns/style.css 406 B
build/block-library/blocks/comment-template/style-rtl.css 127 B
build/block-library/blocks/comment-template/style.css 127 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-query-loop/editor-rtl.css 95 B
build/block-library/blocks/comments-query-loop/editor.css 95 B
build/block-library/blocks/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.4 kB
build/block-library/blocks/cover/style.css 1.4 kB
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 417 B
build/block-library/blocks/embed/style.css 417 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 255 B
build/block-library/blocks/file/style.css 255 B
build/block-library/blocks/file/view.min.js 322 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 965 B
build/block-library/blocks/gallery/editor.css 967 B
build/block-library/blocks/gallery/style-rtl.css 1.61 kB
build/block-library/blocks/gallery/style.css 1.61 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 159 B
build/block-library/blocks/group/editor.css 159 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 114 B
build/block-library/blocks/heading/style.css 114 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 810 B
build/block-library/blocks/image/editor.css 809 B
build/block-library/blocks/image/style-rtl.css 500 B
build/block-library/blocks/image/style.css 503 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 199 B
build/block-library/blocks/latest-posts/editor.css 198 B
build/block-library/blocks/latest-posts/style-rtl.css 447 B
build/block-library/blocks/latest-posts/style.css 446 B
build/block-library/blocks/list/style-rtl.css 94 B
build/block-library/blocks/list/style.css 94 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 493 B
build/block-library/blocks/media-text/style.css 490 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 649 B
build/block-library/blocks/navigation-link/editor.css 650 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/view.min.js 343 B
build/block-library/blocks/navigation/editor-rtl.css 1.98 kB
build/block-library/blocks/navigation/editor.css 1.99 kB
build/block-library/blocks/navigation/style-rtl.css 1.85 kB
build/block-library/blocks/navigation/style.css 1.84 kB
build/block-library/blocks/navigation/view.min.js 2.81 kB
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 401 B
build/block-library/blocks/page-list/editor.css 402 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 273 B
build/block-library/blocks/paragraph/style.css 273 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/style-rtl.css 446 B
build/block-library/blocks/post-comments-form/style.css 446 B
build/block-library/blocks/post-comments/style-rtl.css 521 B
build/block-library/blocks/post-comments/style.css 521 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 721 B
build/block-library/blocks/post-featured-image/editor.css 721 B
build/block-library/blocks/post-featured-image/style-rtl.css 153 B
build/block-library/blocks/post-featured-image/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 323 B
build/block-library/blocks/post-template/style.css 323 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 80 B
build/block-library/blocks/post-title/style.css 80 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 389 B
build/block-library/blocks/pullquote/style.css 388 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 234 B
build/block-library/blocks/query-pagination/style.css 231 B
build/block-library/blocks/query/editor-rtl.css 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 201 B
build/block-library/blocks/quote/style.css 201 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 202 B
build/block-library/blocks/rss/editor.css 204 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 397 B
build/block-library/blocks/search/style.css 398 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 99 B
build/block-library/blocks/separator/editor.css 99 B
build/block-library/blocks/separator/style-rtl.css 245 B
build/block-library/blocks/separator/style.css 245 B
build/block-library/blocks/separator/theme-rtl.css 172 B
build/block-library/blocks/separator/theme.css 172 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 744 B
build/block-library/blocks/site-logo/editor.css 744 B
build/block-library/blocks/site-logo/style-rtl.css 181 B
build/block-library/blocks/site-logo/style.css 181 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 177 B
build/block-library/blocks/social-link/editor.css 177 B
build/block-library/blocks/social-links/editor-rtl.css 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.37 kB
build/block-library/blocks/social-links/style.css 1.36 kB
build/block-library/blocks/spacer/editor-rtl.css 332 B
build/block-library/blocks/spacer/editor.css 332 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 471 B
build/block-library/blocks/table/editor.css 472 B
build/block-library/blocks/table/style-rtl.css 481 B
build/block-library/blocks/table/style.css 481 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 214 B
build/block-library/blocks/tag-cloud/style.css 215 B
build/block-library/blocks/template-part/editor-rtl.css 560 B
build/block-library/blocks/template-part/editor.css 559 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 571 B
build/block-library/blocks/video/editor.css 572 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/common-rtl.css 921 B
build/block-library/common.css 919 B
build/block-library/editor-rtl.css 10.1 kB
build/block-library/editor.css 10.1 kB
build/block-library/index.min.js 166 kB
build/block-library/reset-rtl.css 474 B
build/block-library/reset.css 474 B
build/block-library/style-rtl.css 11.1 kB
build/block-library/style.css 11.1 kB
build/block-library/theme-rtl.css 672 B
build/block-library/theme.css 676 B
build/block-serialization-default-parser/index.min.js 1.09 kB
build/block-serialization-spec-parser/index.min.js 2.79 kB
build/blocks/index.min.js 46.4 kB
build/components/index.min.js 215 kB
build/components/style-rtl.css 15.5 kB
build/components/style.css 15.5 kB
build/compose/index.min.js 11.2 kB
build/core-data/index.min.js 13.4 kB
build/customize-widgets/index.min.js 11.4 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 631 B
build/data/index.min.js 7.49 kB
build/date/index.min.js 31.9 kB
build/deprecated/index.min.js 485 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.5 kB
build/edit-navigation/index.min.js 16.2 kB
build/edit-navigation/style-rtl.css 3.76 kB
build/edit-navigation/style.css 3.76 kB
build/edit-post/classic-rtl.css 546 B
build/edit-post/classic.css 547 B
build/edit-post/index.min.js 29.7 kB
build/edit-post/style-rtl.css 7.15 kB
build/edit-post/style.css 7.14 kB
build/edit-site/index.min.js 41.5 kB
build/edit-site/style-rtl.css 7.22 kB
build/edit-site/style.css 7.21 kB
build/edit-widgets/index.min.js 16.7 kB
build/edit-widgets/style-rtl.css 4.17 kB
build/edit-widgets/style.css 4.17 kB
build/editor/style-rtl.css 3.71 kB
build/editor/style.css 3.71 kB
build/element/index.min.js 3.29 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 6.58 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.63 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.75 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.8 kB
build/keycodes/index.min.js 1.39 kB
build/list-reusable-blocks/index.min.js 1.72 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.92 kB
build/notices/index.min.js 925 B
build/nux/index.min.js 2.08 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.95 kB
build/primitives/index.min.js 917 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.65 kB
build/reusable-blocks/index.min.js 2.22 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 11 kB
build/server-side-render/index.min.js 1.58 kB
build/shortcode/index.min.js 1.49 kB
build/token-list/index.min.js 639 B
build/url/index.min.js 1.9 kB
build/viewport/index.min.js 1.05 kB
build/warning/index.min.js 248 B
build/widgets/index.min.js 7.15 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@skorasaurus
Copy link
Member

also would resolve #24595

@ramonjd ramonjd force-pushed the try/check-link-color-in-contrast-checker branch 2 times, most recently from fcd2ff8 to 89651ee Compare January 21, 2022 02:12
@ramonjd ramonjd marked this pull request as ready for review January 24, 2022 23:13
Copy link
Contributor

@aaronrobertshaw aaronrobertshaw 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 your work on this @ramonjd 🙇

The code changes make sense to me and it all tests as advertised. The example block content was a very helpful starting point and a nice touch, so kudos for that 👍

✅ Unit tests pass
✅ Continues to trigger contrast warnings for background and text colors appropriately
✅ Contrast warnings for links work as advertised
✅ Transparency warnings work as advertised also

As discussed by Glen and yourself previously, I think this is in a good place for a little bit of a refactor, then it should be right to land.

I have one small question though regarding the wording of the contrast warning now it also encompasses link colors but whether it warrants tweaking I'll leave up to you.

@ramonjd
Copy link
Member Author

ramonjd commented Feb 3, 2022

Thanks a lot for the review @aaronrobertshaw and @glendaviesnz !!

As discussed by Glen and yourself previously, I think this is in a good place for a little bit of a refactor, then it should be right to land.

👍 I'll try to untangle things. Maybe it's possible to iterate over a set of rules or something a little more readable.

@ramonjd ramonjd force-pushed the try/check-link-color-in-contrast-checker branch from 9a2c5a1 to 00e5e31 Compare February 4, 2022 12:45
@ramonjd ramonjd removed the request for review from mkaz February 4, 2022 12:46
@ramonjd
Copy link
Member Author

ramonjd commented Feb 4, 2022

Maybe it's possible to iterate over a set of rules or something a little more readable.

Done. Not sure if it's more readable, but it reduces the logic nightmare and opens the checker up to more than two text/foreground colors now.

I think the messages here could be a little clearer. I can see the reference to text color being a point of confusion when it's actually the link color triggering the warning.

The refactor includes sending custom messages so we can tweak the copy depending on the which text triggers the warning.

@ramonjd
Copy link
Member Author

ramonjd commented Feb 4, 2022

Actually I need to wind things back a bit.

Maybe keep the original props for now as I haven't looked at the mobile files yet.

Also the message component can probably be reintroduced into the main component given its size.

…be done iteratively as it touches too many parts, e.g. mobile.
@ramonjd
Copy link
Member Author

ramonjd commented Feb 4, 2022

✅ Maybe keep the original props for now as I haven't looked at the mobile files yet.
✅ Also the message component can probably be reintroduced into the main component given its size.

Copy link
Contributor

@aaronrobertshaw aaronrobertshaw 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 continuing to iterate on this @ramonjd 👍

The approach in keeping the original props makes sense and isolating any refactor to a follow-up sounds good to me.

The inclusion of this will have a small impact on the PR switching the color panel to use the ToolsPanel as well. I'm only noting that here in case for some reason this PR doesn't land first.

I've left a few minor nitpick comments but I'll approve this in case you'd prefer to dismiss those suggestions.

ramonjd and others added 2 commits February 7, 2022 15:29
Update comment so that it reflects what's going on in the code.
@ramonjd ramonjd added this to the Gutenberg 12.6 milestone Feb 7, 2022
@ramonjd ramonjd merged commit ca3c6da into trunk Feb 7, 2022
@ramonjd ramonjd deleted the try/check-link-color-in-contrast-checker branch February 7, 2022 23:26
@priethor priethor added [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). and removed [a11y] Color Contrast labels Jul 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). [Status] In Progress Tracking issues with work in progress [Type] Enhancement A suggestion for improvement.
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

Extend ContrastChecker with link-color support
5 participants