From 427a8d05b77edb3d94271de7583ce6cf440f70c2 Mon Sep 17 00:00:00 2001 From: Manzoor Wani Date: Thu, 26 Sep 2024 01:44:45 -0700 Subject: [PATCH] Fix aria-checked attribute not set for plugin settings buttons in Options dropdown (#65667) Co-authored-by: manzoorwanijk Co-authored-by: Mamaduka Co-authored-by: ciampo --- .../complementary-area-toggle/index.js | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/packages/interface/src/components/complementary-area-toggle/index.js b/packages/interface/src/components/complementary-area-toggle/index.js index 15f9e48d71083e..2f8d8dd413674b 100644 --- a/packages/interface/src/components/complementary-area-toggle/index.js +++ b/packages/interface/src/components/complementary-area-toggle/index.js @@ -10,6 +10,25 @@ import { useDispatch, useSelect } from '@wordpress/data'; import { store as interfaceStore } from '../../store'; import complementaryAreaContext from '../complementary-area-context'; +/** + * Whether the role supports checked state. + * + * @param {import('react').AriaRole} role Role. + * @return {boolean} Whether the role supports checked state. + * @see https://www.w3.org/TR/wai-aria-1.1/#aria-checked + */ +function roleSupportsCheckedState( role ) { + return [ + 'checkbox', + 'option', + 'radio', + 'switch', + 'menuitemcheckbox', + 'menuitemradio', + 'treeitem', + ].includes( role ); +} + function ComplementaryAreaToggle( { as = Button, scope, @@ -35,6 +54,10 @@ function ComplementaryAreaToggle( { { if ( isSelected ) { disableComplementaryArea( scope );