diff --git a/src/button-group/__tests__/button-group.test.tsx b/src/button-group/__tests__/button-group.test.tsx
index ace5d09055..9594dd1cdf 100644
--- a/src/button-group/__tests__/button-group.test.tsx
+++ b/src/button-group/__tests__/button-group.test.tsx
@@ -126,6 +126,21 @@ describe('ButtonGroup', () => {
expect(queryByTitle('testButton')?.getAttribute('aria-checked')).toBeTruthy();
});
+ it('preserves injected aria-checked/role when a child also sets overrides.BaseButton', () => {
+ const { container } = render(
+
+
+
+
+ );
+
+ const buttons = Array.from(container.querySelectorAll('button'));
+ expect(buttons[0].getAttribute('role')).toBe('radio');
+ expect(buttons[0].getAttribute('aria-checked')).toBe('true');
+ expect(buttons[1].getAttribute('role')).toBe('radio');
+ expect(buttons[1].getAttribute('aria-checked')).toBe('false');
+ });
+
it('should handle null children', () => {
const { container } = render(
diff --git a/src/button-group/button-group.tsx b/src/button-group/button-group.tsx
index fbd9313e77..1e60111ac5 100644
--- a/src/button-group/button-group.tsx
+++ b/src/button-group/button-group.tsx
@@ -138,7 +138,9 @@ export default class ButtonGroup extends React.Component {
shape,
size,
overrides: {
+ ...child.props.overrides,
BaseButton: {
+ ...child.props.overrides?.BaseButton,
props: {
...(typeof child.props['aria-checked'] === 'boolean'
? {
@@ -153,10 +155,9 @@ export default class ButtonGroup extends React.Component {
: !isSimpleClickableBtnGroup
? 'checkbox'
: undefined,
+ ...child.props.overrides?.BaseButton?.props,
},
},
-
- ...child.props.overrides,
},
});
})}