Skip to content

Commit 630d7db

Browse files
fix: use preventDefault for handling MDL escape press (#10169) (#10180)
Co-authored-by: Serhii Kulykov <iamkulykov@gmail.com>
1 parent 2b92554 commit 630d7db

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

packages/master-detail-layout/src/vaadin-master-detail-layout.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -441,9 +441,9 @@ class MasterDetailLayout extends SlotStylesMixin(ResizeMixin(ElementMixin(Themab
441441

442442
/** @private */
443443
__onDetailKeydown(event) {
444-
if (event.key === 'Escape') {
444+
if (event.key === 'Escape' && !event.defaultPrevented) {
445445
// Prevent firing on parent layout when using nested layouts
446-
event.stopPropagation();
446+
event.preventDefault();
447447
this.dispatchEvent(new CustomEvent('detail-escape-press'));
448448
}
449449
}

packages/master-detail-layout/test/events.test.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,26 @@ describe('events', () => {
9595

9696
expect(spy).to.be.calledOnce;
9797
});
98+
99+
it('should call preventDefault on keydown event on pressing Escape', async () => {
100+
const spy = sinon.spy();
101+
layout.addEventListener('keydown', spy);
102+
103+
focusable.focus();
104+
await sendKeys({ press: 'Escape' });
105+
106+
expect(spy.firstCall.args[0].defaultPrevented).to.be.true;
107+
});
108+
109+
it('should not call stopPropagation on keydown event on pressing Escape', async () => {
110+
const spy = sinon.spy();
111+
document.addEventListener('keydown', spy, { once: true });
112+
113+
focusable.focus();
114+
await sendKeys({ press: 'Escape' });
115+
116+
expect(spy.calledOnce).to.be.true;
117+
});
98118
});
99119
});
100120

0 commit comments

Comments
 (0)