Skip to content

Make Button and ItemGroup 'Item as a button` focus indication consistent #67747

@afercia

Description

@afercia

Description

Splitting this out from #67513 (comment)

The Button component uses :focus for the focus state, so that the focus style is shown also when using the mouse.

Instead, when the ItemGroup item is rendered as a button via the as prop, it uses :focus-visible so that the focus style is supposed to be shown only when using the keyboard.

As such, the focus indication behavior is inconsistent. I'd tend to think all the components from the components package should use a consistent focus indication behavior.

Step-by-step reproduction instructions

  • Edit a post, select an Image block and go to the block settings panel > Styles.
  • Click and hold your mouse on the 'Duotone' button.
  • Note: this button element is a Button component.
  • Observe the focus style is visible while holding the mouse pressed.
  • Switch to this PR's branch Fix incorrect usage of ItemGroup in the Image block filters panel. #67513 if it hasn't been merged yet.
  • Repeat the steps above.
  • Note: the Duotone button is now an ItemGroup > Item component rendered as a button element.
  • Observe the focus style is not shown when holding the mouse pressed on the button.
  • Observe the focus style is only shown when using the keyboard.

Screenshots, screen recording, code snippet

No response

Environment info

No response

Please confirm that you have searched existing issues in the repo.

  • Yes

Please confirm that you have tested with all plugins deactivated except Gutenberg.

  • Yes

Please confirm which theme type you used for testing.

  • Block
  • Classic
  • Hybrid (e.g. classic with theme.json)
  • Not sure

Metadata

Metadata

Assignees

No one assigned

    Labels

    [Focus] Accessibility (a11y)Changes that impact accessibility and need corresponding review (e.g. markup changes).[Package] Components/packages/components[Status] In ProgressTracking issues with work in progress[Type] BugAn existing feature does not function as intended

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions