From a53de7bbb82428455a4aceaa708dda7df6389655 Mon Sep 17 00:00:00 2001 From: Application-drop-up Date: Sun, 6 Sep 2026 16:20:19 +0900 Subject: [PATCH 1/2] fix: preserve injected aria-checked/role when child sets overrides.BaseButton ButtonGroup spread `...child.props.overrides` after its own injected `overrides.BaseButton`, so a child that also set `overrides.BaseButton` (even for unrelated props like `style`) replaced the whole object and silently dropped the `aria-checked`/`role` ButtonGroup relies on for radio/checkbox semantics. Merge the child's BaseButton override on top of the injected one instead of replacing it wholesale. --- src/button-group/button-group.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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, }, }); })} From fc8024c04e12cf35695a0005afcc72796218ad7d Mon Sep 17 00:00:00 2001 From: Application-drop-up Date: Sun, 6 Sep 2026 16:20:28 +0900 Subject: [PATCH 2/2] test: cover ButtonGroup overrides.BaseButton merge with child overrides MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Regression test for radio-mode ButtonGroup children that also pass overrides.BaseButton (e.g. for style) — aria-checked and role must still be set correctly. --- src/button-group/__tests__/button-group.test.tsx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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( + +