Skip to content

Commit 1ebf04a

Browse files
authored
fix(tile): adds onChange call to handlers in selectable tile (#5156)
* fix(selectabletile): adjust handlers so that onchange function is called * fix(tile): add handlonchange function for VO compatibility
1 parent f3422c4 commit 1ebf04a

File tree

2 files changed

+35
-18
lines changed

2 files changed

+35
-18
lines changed

packages/react/src/components/Tile/Tile-test.js

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,14 +129,15 @@ describe('Tile', () => {
129129
});
130130

131131
describe('Renders selectable tile as expected', () => {
132-
const wrapper = mount(
133-
<SelectableTile className="extra-class">
134-
<div className="child">Test</div>
135-
</SelectableTile>
136-
);
132+
let wrapper;
137133
let label;
138134

139135
beforeEach(() => {
136+
wrapper = mount(
137+
<SelectableTile className="extra-class">
138+
<div className="child">Test</div>
139+
</SelectableTile>
140+
);
140141
wrapper.state().selected = false;
141142
label = wrapper.find('label');
142143
});
@@ -200,6 +201,25 @@ describe('Tile', () => {
200201
expect(wrapper.props().light).toEqual(true);
201202
expect(wrapper.childAt(1).hasClass('bx--tile--light')).toEqual(true);
202203
});
204+
205+
it('should call onChange when the checkbox value changes', () => {
206+
const onChange = jest.fn();
207+
const wrapper = mount(
208+
<SelectableTile onChange={onChange}>
209+
<span id="test-id">test</span>
210+
</SelectableTile>
211+
);
212+
213+
const content = wrapper.find('#test-id');
214+
215+
// Tile becomes selected
216+
content.simulate('click');
217+
expect(onChange).toHaveBeenCalledTimes(1);
218+
219+
// Tile becomes un-selected
220+
content.simulate('click');
221+
expect(onChange).toHaveBeenCalledTimes(2);
222+
});
203223
});
204224

205225
describe('Renders expandable tile as expected', () => {

packages/react/src/components/Tile/Tile.js

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -261,19 +261,15 @@ export class SelectableTile extends Component {
261261
handleClick = evt => {
262262
evt.preventDefault();
263263
evt.persist();
264-
const isInput = evt.target === this.input;
265-
if (!isInput) {
266-
this.setState(
267-
{
268-
selected: !this.state.selected,
269-
},
270-
() => {
271-
this.props.handleClick(evt);
272-
}
273-
);
274-
} else {
275-
this.props.handleClick(evt);
276-
}
264+
this.setState(
265+
{
266+
selected: !this.state.selected,
267+
},
268+
() => {
269+
this.props.handleClick(evt);
270+
this.props.onChange(evt);
271+
}
272+
);
277273
};
278274

279275
handleKeyDown = evt => {
@@ -286,6 +282,7 @@ export class SelectableTile extends Component {
286282
},
287283
() => {
288284
this.props.handleKeyDown(evt);
285+
this.props.onChange(evt);
289286
}
290287
);
291288
} else {

0 commit comments

Comments
 (0)