Skip to content

Commit f48c2a9

Browse files
fix(flyout): change logic for onKeyPress in Flyout.js (#4096)
* fix(flyout): change logic for onKeyPress in Flyout.js * fix(flyout): Trigger Build * fix(flyout): replace event back to onKeyPress --------- Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
1 parent f3af868 commit f48c2a9

File tree

2 files changed

+34
-22
lines changed

2 files changed

+34
-22
lines changed

src/components/flyout/Flyout.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,8 +305,9 @@ class Flyout extends React.Component<Props, State> {
305305
}
306306
};
307307

308-
handleKeyPress = () => {
309-
if (KEYS.enter) {
308+
handleKeyPress = (event: SyntheticKeyboardEvent<>) => {
309+
if (event.key === KEYS.enter) {
310+
event.preventDefault();
310311
this.openOverlay();
311312
this.focusButton();
312313
}

src/components/flyout/__tests__/Flyout.test.js

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -336,10 +336,7 @@ describe('components/flyout/Flyout', () => {
336336
if (shouldCloseOverlay) {
337337
sandbox.mock(instance).expects('handleOverlayClose');
338338
} else {
339-
sandbox
340-
.mock(instance)
341-
.expects('handleOverlayClose')
342-
.never();
339+
sandbox.mock(instance).expects('handleOverlayClose').never();
343340
}
344341
act(() => {
345342
instance.handleOverlayClick(event);
@@ -432,10 +429,7 @@ describe('components/flyout/Flyout', () => {
432429

433430
const instance = wrapper.instance();
434431
setTimeout(() => {
435-
sandbox
436-
.mock(instance)
437-
.expects('openOverlay')
438-
.never();
432+
sandbox.mock(instance).expects('openOverlay').never();
439433
}, 310); // default timeout is 300ms
440434

441435
instance.handleButtonHover(event);
@@ -452,10 +446,7 @@ describe('components/flyout/Flyout', () => {
452446

453447
const instance = wrapper.instance();
454448
setTimeout(() => {
455-
sandbox
456-
.mock(instance)
457-
.expects('openOverlay')
458-
.never();
449+
sandbox.mock(instance).expects('openOverlay').never();
459450
}, timeout - 10);
460451

461452
setTimeout(() => {
@@ -485,6 +476,32 @@ describe('components/flyout/Flyout', () => {
485476
});
486477
});
487478

479+
describe('handleKeyPress()', () => {
480+
test('should call openOverlay() and focusButton() when enter key is pressed', () => {
481+
const wrapper = shallow(
482+
<Flyout>
483+
<FakeButton />
484+
<FakeOverlay />
485+
</Flyout>,
486+
);
487+
488+
const instance = wrapper.instance();
489+
const openOverlaySpy = sandbox.spy(instance, 'openOverlay');
490+
const focusButtonSpy = sandbox.spy(instance, 'focusButton');
491+
492+
const event = {
493+
key: 'Enter',
494+
preventDefault: sandbox.spy(),
495+
};
496+
497+
instance.handleKeyPress(event);
498+
499+
expect(openOverlaySpy.calledOnce).toBe(true);
500+
expect(focusButtonSpy.calledOnce).toBe(true);
501+
expect(event.preventDefault.calledOnce).toBe(true);
502+
});
503+
});
504+
488505
describe('closeOverlay()', () => {
489506
[
490507
{
@@ -803,10 +820,7 @@ describe('components/flyout/Flyout', () => {
803820
if (shouldCallCloseOverlay) {
804821
sandbox.mock(instance).expects('closeOverlay');
805822
} else {
806-
sandbox
807-
.mock(instance)
808-
.expects('closeOverlay')
809-
.never();
823+
sandbox.mock(instance).expects('closeOverlay').never();
810824
}
811825

812826
if (isInsideToggleButton) {
@@ -833,10 +847,7 @@ describe('components/flyout/Flyout', () => {
833847
const el = document.createElement('div');
834848
el.innerHTML = '<div class="class"><div class="target"></div></div>';
835849

836-
sandbox
837-
.mock(instance)
838-
.expects('closeOverlay')
839-
.never();
850+
sandbox.mock(instance).expects('closeOverlay').never();
840851

841852
instance.handleDocumentClickOrWindowBlur({
842853
target: el.querySelector('.target'),

0 commit comments

Comments
 (0)