Skip to content

Commit fdf8628

Browse files
fix: selectableTile onChange event giving old selected value (#18765)
* fix: selectableTile onChange event giving old selected value * fix: added console for testing purpose * fix: added test case * fix: removed console before merge --------- Co-authored-by: Heloise Lui <71858203+heloiselui@users.noreply.github.com>
1 parent 2c5e03d commit fdf8628

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,25 @@ describe('Tile', () => {
482482
expect(tile).not.toHaveClass(`${prefix}--tile--is-selected`);
483483
});
484484

485+
it('SelectableTile Should call onChange with correct values', async () => {
486+
const onChange = jest.fn();
487+
const { container } = render(
488+
<SelectableTile id="selectable-tile-1" onChange={onChange}>
489+
Option 1
490+
</SelectableTile>
491+
);
492+
const tile = container.firstChild;
493+
await userEvent.click(tile);
494+
expect(onChange).toHaveBeenCalled();
495+
expect(onChange).toHaveBeenCalledWith(
496+
expect.objectContaining({
497+
type: 'click',
498+
}),
499+
true,
500+
'selectable-tile-1'
501+
);
502+
});
503+
485504
it('should call onKeyDown', async () => {
486505
const onKeyUp = jest.fn();
487506
render(<ExpandableTile onKeyUp={onKeyUp}>Test Content</ExpandableTile>);

packages/react/src/components/Tile/Tile.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -505,9 +505,12 @@ export const SelectableTile = React.forwardRef<
505505
) {
506506
return;
507507
}
508-
setIsSelected(!isSelected);
508+
setIsSelected((prevSelected) => {
509+
const newSelected = !prevSelected;
510+
onChange(evt, newSelected, id);
511+
return newSelected;
512+
});
509513
clickHandler(evt);
510-
onChange(evt, isSelected, id);
511514
}
512515

513516
function handleKeyDown(evt) {

0 commit comments

Comments
 (0)