Skip to content

Commit

Permalink
Fix Checkbox Group disabled status (ant-design#7266)
Browse files Browse the repository at this point in the history
  • Loading branch information
xuwensheng committed Aug 24, 2017
1 parent 640fcc5 commit 3ad573d
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 40 deletions.
2 changes: 1 addition & 1 deletion components/checkbox/Checkbox.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export default class Checkbox extends React.Component<CheckboxProps, any> {
if (checkboxGroup) {
checkboxProps.onChange = () => checkboxGroup.toggleOption({ label: children, value: props.value });
checkboxProps.checked = checkboxGroup.value.indexOf(props.value) !== -1;
checkboxProps.disabled = 'disabled' in props ? props.disabled : checkboxGroup.disabled;
checkboxProps.disabled = props.disabled || checkboxGroup.disabled;
}
const classString = classNames(className, {
[`${prefixCls}-wrapper`]: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -363,10 +363,11 @@ exports[`renders ./components/checkbox/demo/group.md correctly 1`] = `
class="ant-checkbox-group-item ant-checkbox-wrapper"
>
<span
class="ant-checkbox"
class="ant-checkbox ant-checkbox-disabled"
>
<input
class="ant-checkbox-input"
disabled=""
type="checkbox"
/>
<span
Expand Down
23 changes: 23 additions & 0 deletions components/checkbox/__tests__/checkbox.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import React from 'react';
import { shallow } from 'enzyme';
import Checkbox from '..';

describe('Checkbox', () => {
it('responses hover events', () => {
const onMouseEnter = jest.fn();
const onMouseLeave = jest.fn();

const wrapper = shallow(
<Checkbox
onMouseEnter={onMouseEnter}
onMouseLeave={onMouseLeave}
/>
);

wrapper.simulate('mouseenter');
expect(onMouseEnter).toHaveBeenCalled();

wrapper.simulate('mouseleave');
expect(onMouseLeave).toHaveBeenCalled();
});
});
54 changes: 54 additions & 0 deletions components/checkbox/__tests__/group.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import React from 'react';
import { mount } from 'enzyme';
import Checkbox from '../index';

describe('CheckboxGroup', () => {
it('should work basically', () => {
const onChange = jest.fn();
const wrapper = mount(
<Checkbox.Group options={['Apple', 'Pear', 'Orange']} onChange={onChange} />
);
wrapper.find('.ant-checkbox-input').at(0).simulate('change');
expect(onChange).toBeCalledWith(['Apple']);
wrapper.find('.ant-checkbox-input').at(1).simulate('change');
expect(onChange).toBeCalledWith(['Apple', 'Pear']);
wrapper.find('.ant-checkbox-input').at(2).simulate('change');
expect(onChange).toBeCalledWith(['Apple', 'Pear', 'Orange']);
wrapper.find('.ant-checkbox-input').at(1).simulate('change');
expect(onChange).toBeCalledWith(['Apple', 'Orange']);
});

it('does not trigger onChange callback of both Checkbox and CheckboxGroup when CheckboxGroup is disabled', () => {
const onChangeGroup = jest.fn();

const options = [
{ label: 'Apple', value: 'Apple' },
{ label: 'Pear', value: 'Pear' },
];

const groupWrapper = mount(
<Checkbox.Group options={options} onChange={onChangeGroup} disabled />
);
groupWrapper.find('.ant-checkbox-input').at(0).simulate('change');
expect(onChangeGroup).not.toBeCalled();
groupWrapper.find('.ant-checkbox-input').at(1).simulate('change');
expect(onChangeGroup).not.toBeCalled();
});

it('does not prevent onChange callback from Checkbox when CheckboxGroup is not disabled', () => {
const onChangeGroup = jest.fn();

const options = [
{ label: 'Apple', value: 'Apple' },
{ label: 'Orange', value: 'Orange', disabled: true },
];

const groupWrapper = mount(
<Checkbox.Group options={options} onChange={onChangeGroup} />
);
groupWrapper.find('.ant-checkbox-input').at(0).simulate('change');
expect(onChangeGroup).toBeCalledWith(['Apple']);
groupWrapper.find('.ant-checkbox-input').at(1).simulate('change');
expect(onChangeGroup).toBeCalledWith(['Apple']);
});
});
38 changes: 0 additions & 38 deletions components/checkbox/__tests__/index.test.js

This file was deleted.

0 comments on commit 3ad573d

Please sign in to comment.