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 of contents block accessibility improvements #54322

Merged
merged 11 commits into from
Sep 27, 2023
Merged

Conversation

alexstine
Copy link
Contributor

What?

This PR fixes some accessibility issues in the table of contents block, front-end and back-end.

Why?

Accessibility is important.

How?

  • Remove inert.
  • Disable the ability to click links in the back-end block.
  • Add aria-label to front-end <nav> tag.

Testing Instructions

  1. Insert a Table of Contents block.
  2. Verify the block is keyboard accessible with arrow keys.
  3. Verify clicking the links is disabled.
  4. Verify that screen readers get a disabled announcement through aria-disabled="true" attribute.
  5. Check the front end for the aria-label="Table of Contents" attribute.

Testing Instructions for Keyboard

Verify in the back-end that Up and Down Arrow keys allow you to navigate the block content.

Screenshots or screencast

@alexstine alexstine added [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). Needs Accessibility Feedback Need input from accessibility [Block] Table of contents (experimental) Affects the Table of contents Block labels Sep 8, 2023
@alexstine alexstine self-assigned this Sep 8, 2023
Copy link
Contributor Author

@alexstine alexstine left a comment

Choose a reason for hiding this comment

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

Implementation notes below.

@@ -137,8 +137,11 @@ export default function TableOfContentsEdit( {
return (
<>
<nav { ...blockProps }>
<ol inert="true">
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'm not sure why no one caught this regression. This makes the content completely inaccessible to keyboard users. Please don't do this unless you have a really good reason to.

https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inert

Copy link
Contributor

Choose a reason for hiding this comment

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

inert was added in several places in d50e613; we maybe should take a look at each usage.

<ol>
<TableOfContentsList
nestedHeadingList={ headingTree }
disableLinkActivation={ true }
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Passing this prop to disable link activation for the editor side.

}: {
nestedHeadingList: NestedHeadingData[];
disableLinkActivation?: boolean;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Is there a better way to type this?

<a
className={ ENTRY_CLASS_NAME }
href={ link }
aria-disabled={ disableLinkActivation || undefined }
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This communicates disabled state to screen readers.

className={ ENTRY_CLASS_NAME }
href={ link }
aria-disabled={ disableLinkActivation || undefined }
onClick={
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This prevents click.

? ( event ) => event?.preventDefault()
: undefined
}
onContextMenu={
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This prevents context menu open in new tab/window.

packages/block-library/src/table-of-contents/save.js Outdated Show resolved Hide resolved
@github-actions
Copy link

github-actions bot commented Sep 8, 2023

Size Change: +1.64 kB (0%)

Total Size: 1.62 MB

Filename Size Change
build/a11y/index.min.js 964 B +9 B (+1%)
build/annotations/index.min.js 2.71 kB +25 B (+1%)
build/api-fetch/index.min.js 2.29 kB +13 B (+1%)
build/autop/index.min.js 2.11 kB +7 B (0%)
build/blob/index.min.js 461 B +10 B (+2%)
build/block-directory/index.min.js 7.05 kB +24 B (0%)
build/block-directory/style-rtl.css 1.04 kB +28 B (+3%)
build/block-directory/style.css 1.04 kB +27 B (+3%)
build/block-editor/content-rtl.css 4.28 kB +30 B (+1%)
build/block-editor/content.css 4.27 kB +30 B (+1%)
build/block-editor/default-editor-styles-rtl.css 403 B +22 B (+6%) 🔍
build/block-editor/default-editor-styles.css 403 B +22 B (+6%) 🔍
build/block-editor/index.min.js 218 kB +868 B (0%)
build/block-editor/style-rtl.css 15.6 kB +153 B (+1%)
build/block-editor/style.css 15.6 kB +156 B (+1%)
build/block-library/blocks/audio/theme-rtl.css 138 B +12 B (+10%) ⚠️
build/block-library/blocks/audio/theme.css 138 B +12 B (+10%) ⚠️
build/block-library/blocks/button/editor-rtl.css 587 B +3 B (+1%)
build/block-library/blocks/button/editor.css 587 B +5 B (+1%)
build/block-library/blocks/button/style-rtl.css 633 B +4 B (+1%)
build/block-library/blocks/button/style.css 632 B +4 B (+1%)
build/block-library/blocks/cover/style-rtl.css 1.7 kB +7 B (0%)
build/block-library/blocks/cover/style.css 1.69 kB +7 B (0%)
build/block-library/blocks/embed/theme-rtl.css 138 B +12 B (+10%) ⚠️
build/block-library/blocks/embed/theme.css 138 B +12 B (+10%) ⚠️
build/block-library/blocks/file/view.min.js 321 B +3 B (+1%)
build/block-library/blocks/freeform/editor-rtl.css 2.61 kB +1 B (0%)
build/block-library/blocks/gallery/editor-rtl.css 957 B +10 B (+1%)
build/block-library/blocks/gallery/editor.css 962 B +10 B (+1%)
build/block-library/blocks/gallery/style-rtl.css 1.55 kB +19 B (+1%)
build/block-library/blocks/gallery/style.css 1.55 kB +19 B (+1%)
build/block-library/blocks/gallery/theme-rtl.css 122 B +14 B (+13%) ⚠️
build/block-library/blocks/gallery/theme.css 122 B +14 B (+13%) ⚠️
build/block-library/blocks/heading/style-rtl.css 189 B +113 B (+149%) 🆘
build/block-library/blocks/heading/style.css 189 B +113 B (+149%) 🆘
build/block-library/blocks/html/editor-rtl.css 340 B +4 B (+1%)
build/block-library/blocks/html/editor.css 341 B +4 B (+1%)
build/block-library/blocks/image/theme-rtl.css 137 B +11 B (+9%) 🔍
build/block-library/blocks/image/theme.css 137 B +11 B (+9%) 🔍
build/block-library/blocks/image/view.min.js 1.83 kB +6 B (0%)
build/block-library/blocks/navigation-link/editor-rtl.css 671 B +3 B (0%)
build/block-library/blocks/navigation-link/editor.css 672 B +3 B (0%)
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B +3 B (+1%)
build/block-library/blocks/navigation-submenu/editor.css 299 B +4 B (+1%)
build/block-library/blocks/navigation/editor-rtl.css 2.26 kB +4 B (0%)
build/block-library/blocks/navigation/editor.css 2.26 kB +1 B (0%)
build/block-library/blocks/navigation/style-rtl.css 2.25 kB +13 B (+1%)
build/block-library/blocks/navigation/style.css 2.23 kB +9 B (0%)
build/block-library/blocks/navigation/view.min.js 1.01 kB +23 B (+2%)
build/block-library/blocks/post-featured-image/style-rtl.css 322 B +3 B (+1%)
build/block-library/blocks/post-featured-image/style.css 322 B +3 B (+1%)
build/block-library/blocks/query-pagination/style-rtl.css 288 B -14 B (-5%)
build/block-library/blocks/query-pagination/style.css 284 B -15 B (-5%)
build/block-library/blocks/query/view.min.js 581 B +26 B (+5%) 🔍
build/block-library/blocks/search/style-rtl.css 594 B -13 B (-2%)
build/block-library/blocks/search/style.css 594 B -13 B (-2%)
build/block-library/blocks/search/view.min.js 471 B +3 B (+1%)
build/block-library/blocks/shortcode/editor-rtl.css 329 B +6 B (+2%)
build/block-library/blocks/shortcode/editor.css 329 B +6 B (+2%)
build/block-library/blocks/site-logo/editor-rtl.css 760 B +6 B (+1%)
build/block-library/blocks/site-logo/editor.css 760 B +6 B (+1%)
build/block-library/blocks/spacer/editor-rtl.css 359 B +11 B (+3%)
build/block-library/blocks/spacer/editor.css 359 B +11 B (+3%)
build/block-library/blocks/table/style-rtl.css 646 B +7 B (+1%)
build/block-library/blocks/table/style.css 645 B +6 B (+1%)
build/block-library/blocks/table/theme-rtl.css 157 B +11 B (+8%) 🔍
build/block-library/blocks/table/theme.css 157 B +11 B (+8%) 🔍
build/block-library/blocks/video/style-rtl.css 191 B +6 B (+3%)
build/block-library/blocks/video/style.css 191 B +6 B (+3%)
build/block-library/blocks/video/theme-rtl.css 139 B +13 B (+10%) ⚠️
build/block-library/blocks/video/theme.css 139 B +13 B (+10%) ⚠️
build/block-library/common-rtl.css 1.11 kB +12 B (+1%)
build/block-library/common.css 1.11 kB +13 B (+1%)
build/block-library/editor-rtl.css 12.2 kB +38 B (0%)
build/block-library/editor.css 12.2 kB +40 B (0%)
build/block-library/index.min.js 207 kB +1.75 kB (+1%)
build/block-library/style-rtl.css 14 kB +85 B (+1%)
build/block-library/style.css 14 kB +86 B (+1%)
build/block-library/theme-rtl.css 700 B +12 B (+2%)
build/block-library/theme.css 705 B +12 B (+2%)
build/block-serialization-default-parser/index.min.js 1.13 kB +8 B (+1%)
build/block-serialization-spec-parser/index.min.js 2.87 kB +2 B (0%)
build/blocks/index.min.js 51.5 kB +137 B (0%)
build/commands/index.min.js 15.5 kB +8 B (0%)
build/commands/style-rtl.css 947 B +26 B (+3%)
build/commands/style.css 942 B +24 B (+3%)
build/components/index.min.js 246 kB -9.2 kB (-4%)
build/components/style-rtl.css 11.8 kB +98 B (+1%)
build/components/style.css 11.8 kB +95 B (+1%)
build/compose/index.min.js 12.7 kB +12 B (0%)
build/core-commands/index.min.js 2.62 kB +14 B (+1%)
build/core-data/index.min.js 17.1 kB +24 B (0%)
build/customize-widgets/index.min.js 12 kB +12 B (0%)
build/customize-widgets/style-rtl.css 1.51 kB +26 B (+2%)
build/customize-widgets/style.css 1.5 kB +25 B (+2%)
build/data-controls/index.min.js 651 B +11 B (+2%)
build/data/index.min.js 8.87 kB +33 B (0%)
build/date/index.min.js 17.9 kB +10 B (0%)
build/deprecated/index.min.js 462 B +11 B (+2%)
build/dom-ready/index.min.js 336 B +12 B (+4%)
build/dom/index.min.js 4.68 kB +40 B (+1%)
build/edit-post/classic-rtl.css 571 B +27 B (+5%) 🔍
build/edit-post/classic.css 571 B +26 B (+5%) 🔍
build/edit-post/index.min.js 35.6 kB +156 B (0%)
build/edit-post/style-rtl.css 7.92 kB +87 B (+1%)
build/edit-post/style.css 7.91 kB +88 B (+1%)
build/edit-site/index.min.js 185 kB +4.14 kB (+2%)
build/edit-site/style-rtl.css 14 kB +192 B (+1%)
build/edit-site/style.css 14 kB +189 B (+1%)
build/edit-widgets/index.min.js 17 kB +97 B (+1%)
build/edit-widgets/style-rtl.css 4.84 kB +49 B (+1%)
build/edit-widgets/style.css 4.84 kB +48 B (+1%)
build/editor/index.min.js 45.9 kB +281 B (+1%)
build/editor/style-rtl.css 3.58 kB +54 B (+2%)
build/editor/style.css 3.58 kB +54 B (+2%)
build/element/index.min.js 4.87 kB +50 B (+1%)
build/escape-html/index.min.js 548 B +11 B (+2%)
build/format-library/index.min.js 7.75 kB +32 B (0%)
build/format-library/style-rtl.css 577 B +23 B (+4%)
build/format-library/style.css 577 B +24 B (+4%)
build/hooks/index.min.js 1.57 kB +23 B (+1%)
build/html-entities/index.min.js 454 B +6 B (+1%)
build/i18n/index.min.js 3.61 kB +28 B (+1%)
build/interactivity/index.min.js 11.4 kB +104 B (+1%)
build/is-shallow-equal/index.min.js 535 B +8 B (+2%)
build/keyboard-shortcuts/index.min.js 1.74 kB +16 B (+1%)
build/keycodes/index.min.js 1.9 kB +31 B (+2%)
build/list-reusable-blocks/index.min.js 2.2 kB -2 B (0%)
build/list-reusable-blocks/style-rtl.css 865 B +29 B (+3%)
build/list-reusable-blocks/style.css 865 B +29 B (+3%)
build/media-utils/index.min.js 2.92 kB +17 B (+1%)
build/notices/index.min.js 964 B +16 B (+2%)
build/nux/index.min.js 2 kB +17 B (+1%)
build/nux/style-rtl.css 775 B +40 B (+5%) 🔍
build/nux/style.css 771 B +39 B (+5%) 🔍
build/patterns/index.min.js 3.54 kB +187 B (+6%) 🔍
build/patterns/style-rtl.css 325 B +23 B (+8%) 🔍
build/patterns/style.css 325 B +23 B (+8%) 🔍
build/plugins/index.min.js 1.8 kB +14 B (+1%)
build/preferences-persistence/index.min.js 1.85 kB +10 B (+1%)
build/preferences/index.min.js 1.25 kB +14 B (+1%)
build/primitives/index.min.js 994 B +19 B (+2%)
build/priority-queue/index.min.js 1.52 kB +2 B (0%)
build/private-apis/index.min.js 972 B +14 B (+1%)
build/react-i18n/index.min.js 624 B +9 B (+1%)
build/react-refresh-entry/index.min.js 9.46 kB -6 B (0%)
build/react-refresh-runtime/index.min.js 6.78 kB -526 B (-7%)
build/redux-routine/index.min.js 2.71 kB +3 B (0%)
build/reusable-blocks/index.min.js 2.72 kB +18 B (+1%)
build/reusable-blocks/style-rtl.css 265 B +22 B (+9%) 🔍
build/reusable-blocks/style.css 265 B +22 B (+9%) 🔍
build/rich-text/index.min.js 10.2 kB +39 B (0%)
build/server-side-render/index.min.js 1.95 kB +10 B (+1%)
build/shortcode/index.min.js 1.4 kB +8 B (+1%)
build/style-engine/index.min.js 1.98 kB +4 B (0%)
build/sync/index.min.js 53.8 kB +6 B (0%)
build/token-list/index.min.js 587 B +5 B (+1%)
build/url/index.min.js 3.84 kB +106 B (+3%)
build/viewport/index.min.js 968 B +10 B (+1%)
build/warning/index.min.js 259 B +10 B (+4%)
build/widgets/index.min.js 7.17 kB +13 B (0%)
build/widgets/style-rtl.css 1.18 kB +27 B (+2%)
build/widgets/style.css 1.18 kB +26 B (+2%)
build/wordcount/index.min.js 1.03 kB +4 B (0%)
ℹ️ View Unchanged
Filename Size
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 90 B
build/block-library/blocks/archives/style.css 90 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 122 B
build/block-library/blocks/audio/style.css 122 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 104 B
build/block-library/blocks/avatar/style.css 104 B
build/block-library/blocks/block/editor-rtl.css 305 B
build/block-library/blocks/block/editor.css 305 B
build/block-library/blocks/buttons/editor-rtl.css 337 B
build/block-library/blocks/buttons/editor.css 337 B
build/block-library/blocks/buttons/style-rtl.css 332 B
build/block-library/blocks/buttons/style.css 332 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 B
build/block-library/blocks/categories/editor-rtl.css 113 B
build/block-library/blocks/categories/editor.css 112 B
build/block-library/blocks/categories/style-rtl.css 124 B
build/block-library/blocks/categories/style.css 124 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 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 421 B
build/block-library/blocks/columns/style.css 421 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-content/style-rtl.css 92 B
build/block-library/blocks/comment-content/style.css 92 B
build/block-library/blocks/comment-template/style-rtl.css 199 B
build/block-library/blocks/comment-template/style.css 198 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-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 840 B
build/block-library/blocks/comments/editor.css 839 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 636 B
build/block-library/blocks/cover/editor-rtl.css 647 B
build/block-library/blocks/cover/editor.css 650 B
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 98 B
build/block-library/blocks/details/style.css 98 B
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 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/file/editor-rtl.css 316 B
build/block-library/blocks/file/editor.css 316 B
build/block-library/blocks/file/style-rtl.css 311 B
build/block-library/blocks/file/style.css 312 B
build/block-library/blocks/footnotes/style-rtl.css 201 B
build/block-library/blocks/footnotes/style.css 199 B
build/block-library/blocks/freeform/editor.css 2.61 kB
build/block-library/blocks/group/editor-rtl.css 654 B
build/block-library/blocks/group/editor.css 654 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/image/editor-rtl.css 834 B
build/block-library/blocks/image/editor.css 833 B
build/block-library/blocks/image/style-rtl.css 1.42 kB
build/block-library/blocks/image/style.css 1.41 kB
build/block-library/blocks/latest-comments/style-rtl.css 357 B
build/block-library/blocks/latest-comments/style.css 357 B
build/block-library/blocks/latest-posts/editor-rtl.css 213 B
build/block-library/blocks/latest-posts/editor.css 212 B
build/block-library/blocks/latest-posts/style-rtl.css 478 B
build/block-library/blocks/latest-posts/style.css 478 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 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 505 B
build/block-library/blocks/media-text/style.css 503 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/style-rtl.css 115 B
build/block-library/blocks/navigation-link/style.css 115 B
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 401 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 235 B
build/block-library/blocks/paragraph/editor.css 235 B
build/block-library/blocks/paragraph/style-rtl.css 335 B
build/block-library/blocks/paragraph/style.css 335 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/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 508 B
build/block-library/blocks/post-comments-form/style.css 508 B
build/block-library/blocks/post-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 141 B
build/block-library/blocks/post-excerpt/style.css 141 B
build/block-library/blocks/post-featured-image/editor-rtl.css 588 B
build/block-library/blocks/post-featured-image/editor.css 586 B
build/block-library/blocks/post-navigation-link/style-rtl.css 215 B
build/block-library/blocks/post-navigation-link/style.css 214 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 314 B
build/block-library/blocks/post-template/style.css 314 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 69 B
build/block-library/blocks/post-time-to-read/style.css 69 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 125 B
build/block-library/blocks/preformatted/style.css 125 B
build/block-library/blocks/pullquote/editor-rtl.css 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 335 B
build/block-library/blocks/pullquote/style.css 335 B
build/block-library/blocks/pullquote/theme-rtl.css 168 B
build/block-library/blocks/pullquote/theme.css 168 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-title/style-rtl.css 63 B
build/block-library/blocks/query-title/style.css 63 B
build/block-library/blocks/query/editor-rtl.css 486 B
build/block-library/blocks/query/editor.css 486 B
build/block-library/blocks/query/style-rtl.css 375 B
build/block-library/blocks/query/style.css 372 B
build/block-library/blocks/quote/style-rtl.css 222 B
build/block-library/blocks/quote/style.css 222 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 149 B
build/block-library/blocks/rss/editor.css 149 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 178 B
build/block-library/blocks/search/editor.css 178 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 234 B
build/block-library/blocks/separator/style.css 234 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/site-logo/style-rtl.css 204 B
build/block-library/blocks/site-logo/style.css 204 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 116 B
build/block-library/blocks/site-title/editor.css 116 B
build/block-library/blocks/site-title/style-rtl.css 57 B
build/block-library/blocks/site-title/style.css 57 B
build/block-library/blocks/social-link/editor-rtl.css 184 B
build/block-library/blocks/social-link/editor.css 184 B
build/block-library/blocks/social-links/editor-rtl.css 682 B
build/block-library/blocks/social-links/editor.css 681 B
build/block-library/blocks/social-links/style-rtl.css 1.44 kB
build/block-library/blocks/social-links/style.css 1.43 kB
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 432 B
build/block-library/blocks/table/editor.css 432 B
build/block-library/blocks/tag-cloud/style-rtl.css 251 B
build/block-library/blocks/tag-cloud/style.css 253 B
build/block-library/blocks/template-part/editor-rtl.css 403 B
build/block-library/blocks/template-part/editor.css 403 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/term-description/style-rtl.css 111 B
build/block-library/blocks/term-description/style.css 111 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 99 B
build/block-library/blocks/verse/style.css 99 B
build/block-library/blocks/video/editor-rtl.css 552 B
build/block-library/blocks/video/editor.css 555 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/router/index.min.js 1.78 kB
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 41.8 kB
build/vendors/react.min.js 4.02 kB

compressed-size-action

@Mamaduka
Copy link
Member

The aria-label is now included in the server render Table of Contents block - b0935ab.

@Mamaduka
Copy link
Member

Note: The Latest Post block has a similar implementation for preventing opening links in the editor (ref: #40593), but it uses Snackbars instead.

Which method would be preferred for screen reader users - snackbars or description like we're adding here?

I think using one method across the blocks would set better expectations, and we could also recommend it in the future.

@alexstine
Copy link
Contributor Author

@Mamaduka I actually like the snackbar approach because it is less verbose. Maybe this would be a good hook to create? It also makes it more clear visually with the visual notice. Something like useDisabledNotice().

@Mamaduka
Copy link
Member

@alexstine, starting with code duplication is fine for now and usually works better than early abstractions.

After we have a common pattern, I'm happy to team up and extract it into a reusable hook.

Maybe something like this:

function Example() {
  // `useInertLinkProps` or `useDisabledLinkProps`.
  const inertLinkProps = useInertLinkProps();

  return <a className="example" { ...inertLinkProps }>Example</a>;
}
@alexstine
Copy link
Contributor Author

Sounds good. I'll work on implementing this code later today. Its already after midnight. 😞

@alexstine
Copy link
Contributor Author

@Mamaduka Finally got time to implement this. Should be good for another review.

Copy link
Member

@Mamaduka Mamaduka left a comment

Choose a reason for hiding this comment

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

@alexstine, the new notice fails for the nested headings in ToC. The TableOfContentsList calls itself for rendering nested lists, so you'll need to pass extra props there as well.

Try testing the ToC block with the following heading structure. Clicking on "A sub heading" currently will trigger navigation.

Block code snippet:

<!-- wp:heading -->
<h2 class="wp-block-heading" id="heading-text">Heading text</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading" id="a-sub-heading">A sub heading</h3>
<!-- /wp:heading -->
@alexstine
Copy link
Contributor Author

Fixed @Mamaduka. Totally missed the last call.

Copy link
Member

@Mamaduka Mamaduka left a comment

Choose a reason for hiding this comment

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

Thank you, @alexstine!

@alexstine alexstine merged commit 9293a5a into trunk Sep 27, 2023
51 checks passed
@alexstine alexstine deleted the fix/toc-block-a11y branch September 27, 2023 01:01
@github-actions github-actions bot added this to the Gutenberg 16.8 milestone Sep 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Table of contents (experimental) Affects the Table of contents Block [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). Needs Accessibility Feedback Need input from accessibility
4 participants