diff --git a/.eslintrc.js b/.eslintrc.js index 177f3cf35b8ccf..7d1bb161a7c3f1 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -397,6 +397,7 @@ module.exports = { 'no-restricted-syntax': [ 'error', ...restrictedSyntax, + ...restrictedSyntaxComponents, { selector: ':matches(Literal[value=/--wp-admin-theme-/],TemplateElement[value.cooked=/--wp-admin-theme-/])', diff --git a/packages/block-editor/src/components/block-switcher/test/index.js b/packages/block-editor/src/components/block-switcher/test/index.js index ce900003e7a603..bc1b7d1a4a3640 100644 --- a/packages/block-editor/src/components/block-switcher/test/index.js +++ b/packages/block-editor/src/components/block-switcher/test/index.js @@ -134,7 +134,7 @@ describe( 'BlockSwitcher', () => { expect( items[ 1 ] ).toHaveTextContent( headingBlockType.title ); } ); - test( 'should render disabled block switcher when we have a single selected block without styles and we cannot remove it', () => { + test( 'should render accessibly disabled block switcher when we have a single selected block without styles and we cannot remove it', () => { useSelect.mockImplementation( () => ( { blocks: [ headingBlock1 ], icon: copy, @@ -142,11 +142,11 @@ describe( 'BlockSwitcher', () => { canRemove: false, } ) ); render( ); - expect( - screen.getByRole( 'button', { - name: 'Block Name', - } ) - ).toBeDisabled(); + const blockSwitcher = screen.getByRole( 'button', { + name: 'Block Name', + } ); + expect( blockSwitcher ).toBeEnabled(); + expect( blockSwitcher ).toHaveAttribute( 'aria-disabled', 'true' ); } ); test( 'should render message for no available transforms', async () => { diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md index 70fbd64b380c64..29313168993cac 100644 --- a/packages/components/CHANGELOG.md +++ b/packages/components/CHANGELOG.md @@ -7,6 +7,7 @@ - `UnitControl`: Fix colors when disabled. ([#62970](https://github.com/WordPress/gutenberg/pull/62970)) - `useUpdateEffect`: Correctly track mounted state in strict mode. ([#62974](https://github.com/WordPress/gutenberg/pull/62974)) - `UnitControl`: Fix an issue where keyboard shortcuts unintentionally shift focus on Windows OS. ([#62988](https://github.com/WordPress/gutenberg/pull/62988)) +- Fix inaccessibly disabled `Button`s ([#62306](https://github.com/WordPress/gutenberg/pull/62306)). ### Internal diff --git a/packages/components/src/autocomplete/autocompleter-ui.tsx b/packages/components/src/autocomplete/autocompleter-ui.tsx index a22e197decd154..59c88b4e41ecd1 100644 --- a/packages/components/src/autocomplete/autocompleter-ui.tsx +++ b/packages/components/src/autocomplete/autocompleter-ui.tsx @@ -58,6 +58,7 @@ function ListBox( { id={ `components-autocomplete-item-${ instanceId }-${ option.key }` } role="option" aria-selected={ index === selectedIndex } + __experimentalIsFocusable disabled={ option.isDisabled } className={ clsx( 'components-autocomplete__result', diff --git a/packages/components/src/button/stories/e2e/index.story.tsx b/packages/components/src/button/stories/e2e/index.story.tsx index 1baeb08fb73e23..075438fe0579eb 100644 --- a/packages/components/src/button/stories/e2e/index.story.tsx +++ b/packages/components/src/button/stories/e2e/index.story.tsx @@ -39,6 +39,7 @@ export const VariantStates: StoryFn< typeof Button > = ( key={ variant ?? 'undefined' } >