Skip to content

Commit 61aaf4f

Browse files
authored
fix: should stopPropagation when pressing esc (#588)
* fix: should stopPropagation when pressing esc * chore: optimize logic
1 parent ea9e62d commit 61aaf4f

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/OptionList.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,9 @@ const OptionList: React.RefForwardingComponent<
218218
// >>> Close
219219
case KeyCode.ESC: {
220220
onToggleOpen(false);
221+
if (open) {
222+
event.stopPropagation();
223+
}
221224
}
222225
}
223226
},

tests/Select.test.tsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -666,7 +666,12 @@ describe('Select.Basic', () => {
666666
});
667667

668668
it('close on ESC', () => {
669-
const wrapper = mount(<Select />);
669+
const onKeyDown = jest.fn();
670+
const wrapper = mount(
671+
<div onKeyDown={onKeyDown}>
672+
<Select />
673+
</div>,
674+
);
670675
toggleOpen(wrapper);
671676
wrapper
672677
.find('input')
@@ -677,6 +682,12 @@ describe('Select.Basic', () => {
677682

678683
expect(wrapper.find('input').props().value).toBe('');
679684
expectOpen(wrapper, false);
685+
expect(onKeyDown).toHaveBeenCalledTimes(0);
686+
687+
// should keep propagation when optionList is closed
688+
wrapper.simulate('keyDown', { which: KeyCode.ESC });
689+
wrapper.update();
690+
expect(onKeyDown).toHaveBeenCalledTimes(1);
680691
});
681692

682693
it('close after select', () => {

0 commit comments

Comments
 (0)