Skip to content

Commit

Permalink
fix(Button): only default to button when click is handled (#383)
Browse files Browse the repository at this point in the history
fixes: #382
  • Loading branch information
TheSharpieOne authored and eddywashere committed Apr 3, 2017
1 parent 5461049 commit af3ccbe
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/Button.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ class Button extends React.Component {

return (
<Tag
type={Tag === 'button' ? 'button' : undefined}
type={(Tag === 'button' && attributes.onClick) ? 'button' : undefined}
{...attributes}
className={classes}
ref={getRef}
Expand Down
2 changes: 1 addition & 1 deletion src/DropdownItem.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ class DropdownItem extends React.Component {

return (
<Tag
type={Tag === 'button' ? 'button' : undefined}
type={(Tag === 'button' && (props.onClick || this.props.toggle)) ? 'button' : undefined}
{...props}
tabIndex={tabIndex}
className={classes}
Expand Down
9 changes: 8 additions & 1 deletion src/__tests__/Button.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,16 @@ describe('Button', () => {
expect(wrapper.text()).toBe('Home');
});

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

expect(wrapper.find('button').prop('type')).toBe(undefined);
expect(wrapper.text()).toBe('Home');
});

it('should render type as "button" by default when tag is "button" and onClick is provided', () => {
const wrapper = mount(<Button onClick={() => {}}>Home</Button>);

expect(wrapper.find('button').prop('type')).toBe('button');
expect(wrapper.text()).toBe('Home');
});
Expand Down
14 changes: 14 additions & 0 deletions src/__tests__/DropdownItem.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,20 @@ describe('DropdownItem', () => {
expect(wrapper.text()).toBe('Home');
});

it('should render type as undefined by default when tag is "button" and toggle is false', () => {
const wrapper = mount(<DropdownItem toggle={false}>Home</DropdownItem>);

expect(wrapper.find('button').prop('type')).toBe(undefined);
expect(wrapper.text()).toBe('Home');
});

it('should render type as "button" by default when tag is "button" and onClick is provided', () => {
const wrapper = mount(<DropdownItem onClick={() => {}}>Home</DropdownItem>);

expect(wrapper.find('button').prop('type')).toBe('button');
expect(wrapper.text()).toBe('Home');
});

it('should render type as user defined when defined by the user', () => {
const wrapper = mount(<DropdownItem type="submit">Home</DropdownItem>);

Expand Down

0 comments on commit af3ccbe

Please sign in to comment.