From 34d29745cd6cb3cf0fec96e01ab6b09218805125 Mon Sep 17 00:00:00 2001 From: Katie McFaul Date: Wed, 7 Oct 2026 11:52:40 -0400 Subject: [PATCH 1/2] fix(MenuToggle): allow direct string boolean for aria-haspopup --- packages/react-core/src/components/MenuToggle/MenuToggle.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-core/src/components/MenuToggle/MenuToggle.tsx b/packages/react-core/src/components/MenuToggle/MenuToggle.tsx index 73646fd7df8..865decd1ab1 100644 --- a/packages/react-core/src/components/MenuToggle/MenuToggle.tsx +++ b/packages/react-core/src/components/MenuToggle/MenuToggle.tsx @@ -72,7 +72,7 @@ export interface MenuToggleProps /** Adds styling which affects the size of the menu toggle */ size?: 'default' | 'sm'; /** Indicates what type of popup will be triggered by the menu toggle. A value of true is the same as a value of "menu". */ - 'aria-haspopup'?: 'menu' | 'listbox' | boolean; + 'aria-haspopup'?: 'menu' | 'listbox' | 'true' | 'false' | boolean; /** @hide Forwarded ref */ innerRef?: React.Ref; /** Value to overwrite the randomly generated data-ouia-component-id. It will always target the toggle button. */ From 53355bd0a4b0990c9e7a5983bb9e3533fc51b8c3 Mon Sep 17 00:00:00 2001 From: Katie McFaul Date: Wed, 7 Oct 2026 12:04:15 -0400 Subject: [PATCH 2/2] add tests for both boolean and string aria-haspopup --- .../MenuToggle/__tests__/MenuToggle.test.tsx | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/react-core/src/components/MenuToggle/__tests__/MenuToggle.test.tsx b/packages/react-core/src/components/MenuToggle/__tests__/MenuToggle.test.tsx index fcc73760821..a47dee80e9a 100644 --- a/packages/react-core/src/components/MenuToggle/__tests__/MenuToggle.test.tsx +++ b/packages/react-core/src/components/MenuToggle/__tests__/MenuToggle.test.tsx @@ -184,3 +184,23 @@ test(`Does not render with class ${styles.modifiers.expanded} when isExpanded is render(Text Expanded Toggle); expect(screen.getByRole('button')).toHaveClass(styles.modifiers.expanded); }); + +test(`Renders with aria-haspopup="true" when 'aria-haspopup' is passed and value is true`, () => { + render(Toggle); + expect(screen.getByRole('button')).toHaveAttribute('aria-haspopup', 'true'); +}); + +test(`Renders with aria-haspopup="false" when 'aria-haspopup' is passed and value is false`, () => { + render(Toggle); + expect(screen.getByRole('button')).toHaveAttribute('aria-haspopup', 'false'); +}); + +test(`Renders with aria-haspopup="true" when 'aria-haspopup' is passed a boolean with a value of true`, () => { + render(Toggle); + expect(screen.getByRole('button')).toHaveAttribute('aria-haspopup', 'true'); +}); + +test(`Renders with aria-haspopup="false" when 'aria-haspopup' is passed a boolean with a value of false`, () => { + render(Toggle); + expect(screen.getByRole('button')).toHaveAttribute('aria-haspopup', 'false'); +});