From 450fa019d44f447a349707d77635f95bbc9f1049 Mon Sep 17 00:00:00 2001 From: Westbrook Date: Mon, 20 Sep 2021 09:21:30 -0400 Subject: [PATCH] fix: ensure "click" on "NumpadEnter" key press --- packages/button/src/ButtonBase.ts | 1 + packages/button/test/button.test.ts | 26 +++++++++++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/packages/button/src/ButtonBase.ts b/packages/button/src/ButtonBase.ts index a10d45092a..ae5fc0b5da 100644 --- a/packages/button/src/ButtonBase.ts +++ b/packages/button/src/ButtonBase.ts @@ -163,6 +163,7 @@ export class ButtonBase extends LikeAnchor( const { code } = event; switch (code) { case 'Enter': + case 'NumpadEnter': this.click(); break; default: diff --git a/packages/button/test/button.test.ts b/packages/button/test/button.test.ts index 76d13ac308..af040f8282 100644 --- a/packages/button/test/button.test.ts +++ b/packages/button/test/button.test.ts @@ -63,7 +63,7 @@ describe('Button', () => { await elementUpdated(el); expect(el).to.not.be.undefined; expect(el.textContent).to.include('Button'); - expect(!((el as unknown) as { hasIcon: boolean }).hasIcon); + expect(!(el as unknown as { hasIcon: boolean }).hasIcon); await expect(el).to.be.accessible(); }); it('loads default only icon', async () => { @@ -112,7 +112,7 @@ describe('Button', () => { await elementUpdated(el); - const labelTestableEl = (el as unknown) as TestableButtonType; + const labelTestableEl = el as unknown as TestableButtonType; expect(labelTestableEl.hasLabel, 'starts with label').to.be.true; @@ -304,6 +304,20 @@ describe('Button', () => { expect(clickSpy.callCount).to.equal(1); clickSpy.resetHistory(); + el.dispatchEvent( + new KeyboardEvent('keypress', { + bubbles: true, + composed: true, + cancelable: true, + code: 'NumpadEnter', + key: 'NumpadEnter', + }) + ); + + await elementUpdated(el); + expect(clickSpy.callCount).to.equal(1); + clickSpy.resetHistory(); + el.dispatchEvent( new KeyboardEvent('keypress', { bubbles: true, @@ -451,9 +465,11 @@ describe('Button', () => { ); await elementUpdated(el); - ((el as unknown) as { - anchorElement: HTMLAnchorElement; - }).anchorElement.addEventListener('click', (event: Event): void => { + ( + el as unknown as { + anchorElement: HTMLAnchorElement; + } + ).anchorElement.addEventListener('click', (event: Event): void => { event.preventDefault(); event.stopPropagation(); clickSpy();