Skip to content

Commit 1aaf7e7

Browse files
authored
[useButton] Stop setting type on non-native buttons (#4819)
1 parent 646f580 commit 1aaf7e7

2 files changed

Lines changed: 14 additions & 4 deletions

File tree

packages/react/src/internals/use-button/useButton.test.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,19 @@ describe('useButton', () => {
4141
});
4242
});
4343

44+
it('does not set a type prop', async () => {
45+
let buttonProps: Record<string, unknown> | undefined = undefined;
46+
47+
function Button() {
48+
const { getButtonProps } = useButton({ native: false });
49+
buttonProps = getButtonProps();
50+
return <span {...buttonProps} />;
51+
}
52+
53+
await render(<Button />);
54+
expect(buttonProps).not.toHaveProperty('type');
55+
});
56+
4457
it.skipIf(isJSDOM)(
4558
'can be activated with Enter when the keyboard event originates inside a shadow root',
4659
async () => {

packages/react/src/internals/use-button/useButton.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,8 @@ export function useButton(parameters: UseButtonParameters = {}): UseButtonReturn
9898
...otherExternalProps
9999
} = externalProps;
100100

101-
const type = isNativeButton ? 'button' : undefined;
102-
103101
return mergeProps<'button'>(
104102
{
105-
type,
106103
onClick(event: React.MouseEvent) {
107104
if (disabled) {
108105
event.preventDefault();
@@ -209,7 +206,7 @@ export function useButton(parameters: UseButtonParameters = {}): UseButtonReturn
209206
externalOnPointerDown?.(event);
210207
},
211208
},
212-
!isNativeButton ? { role: 'button' } : undefined,
209+
isNativeButton ? { type: 'button' } : { role: 'button' },
213210
focusableWhenDisabledProps,
214211
otherExternalProps,
215212
);

0 commit comments

Comments
 (0)