Skip to content

Commit af3ccbe

Browse files
TheSharpieOneeddywashere
authored andcommitted
fix(Button): only default to button when click is handled (#383)
fixes: #382
1 parent 5461049 commit af3ccbe

4 files changed

Lines changed: 24 additions & 3 deletions

File tree

src/Button.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class Button extends React.Component {
7070

7171
return (
7272
<Tag
73-
type={Tag === 'button' ? 'button' : undefined}
73+
type={(Tag === 'button' && attributes.onClick) ? 'button' : undefined}
7474
{...attributes}
7575
className={classes}
7676
ref={getRef}

src/DropdownItem.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ class DropdownItem extends React.Component {
8888

8989
return (
9090
<Tag
91-
type={Tag === 'button' ? 'button' : undefined}
91+
type={(Tag === 'button' && (props.onClick || this.props.toggle)) ? 'button' : undefined}
9292
{...props}
9393
tabIndex={tabIndex}
9494
className={classes}

src/__tests__/Button.spec.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,16 @@ describe('Button', () => {
2424
expect(wrapper.text()).toBe('Home');
2525
});
2626

27-
it('should render type as "button" by default when tag is "button"', () => {
27+
it('should render type as undefined by default when tag is "button"', () => {
2828
const wrapper = mount(<Button>Home</Button>);
2929

30+
expect(wrapper.find('button').prop('type')).toBe(undefined);
31+
expect(wrapper.text()).toBe('Home');
32+
});
33+
34+
it('should render type as "button" by default when tag is "button" and onClick is provided', () => {
35+
const wrapper = mount(<Button onClick={() => {}}>Home</Button>);
36+
3037
expect(wrapper.find('button').prop('type')).toBe('button');
3138
expect(wrapper.text()).toBe('Home');
3239
});

src/__tests__/DropdownItem.spec.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,20 @@ describe('DropdownItem', () => {
2626
expect(wrapper.text()).toBe('Home');
2727
});
2828

29+
it('should render type as undefined by default when tag is "button" and toggle is false', () => {
30+
const wrapper = mount(<DropdownItem toggle={false}>Home</DropdownItem>);
31+
32+
expect(wrapper.find('button').prop('type')).toBe(undefined);
33+
expect(wrapper.text()).toBe('Home');
34+
});
35+
36+
it('should render type as "button" by default when tag is "button" and onClick is provided', () => {
37+
const wrapper = mount(<DropdownItem onClick={() => {}}>Home</DropdownItem>);
38+
39+
expect(wrapper.find('button').prop('type')).toBe('button');
40+
expect(wrapper.text()).toBe('Home');
41+
});
42+
2943
it('should render type as user defined when defined by the user', () => {
3044
const wrapper = mount(<DropdownItem type="submit">Home</DropdownItem>);
3145

0 commit comments

Comments
 (0)