From bc728ec010b60aa305a2df5e105b6adaca3acf09 Mon Sep 17 00:00:00 2001 From: Sebastian Ware Date: Mon, 4 Dec 2023 11:12:23 +0100 Subject: [PATCH 1/2] Mozilla marked bug as resolved three years ago so the fix should be generally available --- .../inferno/__tests__/instancenull.spec.tsx | 40 ------------------- packages/inferno/src/DOM/events/delegation.ts | 24 ++--------- 2 files changed, 4 insertions(+), 60 deletions(-) diff --git a/packages/inferno/__tests__/instancenull.spec.tsx b/packages/inferno/__tests__/instancenull.spec.tsx index 493d66c8d..cb6511c01 100644 --- a/packages/inferno/__tests__/instancenull.spec.tsx +++ b/packages/inferno/__tests__/instancenull.spec.tsx @@ -424,46 +424,6 @@ describe('BUG: instance - null', () => { expect(container.innerHTML).toBe(''); }); - it('Should not propagate mid/right mouse buttons clicks', (done) => { - const obj = { - spy() {}, - }; - const spy = spyOn(obj, 'spy'); - - render( -
-
- test -
-
, - container, - ); - - const event = document.createEvent('MouseEvents'); - // Simulate right click - Object.defineProperty(event, 'button', { - value: 2, - }); - - // If changing button for click event is not supported, then we can skip this test. - if (event.button === 0) { - done(); - return; - } - - event.initEvent('click', true, true); - - expect(spy.calls.count()).toBe(0); - - const node = container.querySelector('#MAGICBUTTON'); - node.dispatchEvent(event); - - setTimeout(function () { - expect(spy.calls.count()).toBe(0); - done(); - }, 10); - }); - it('Should not fail #2', () => { const items = [ { diff --git a/packages/inferno/src/DOM/events/delegation.ts b/packages/inferno/src/DOM/events/delegation.ts index 12cbb5657..6e81dbcd1 100644 --- a/packages/inferno/src/DOM/events/delegation.ts +++ b/packages/inferno/src/DOM/events/delegation.ts @@ -174,34 +174,18 @@ function extendEventProperties(event): IEventData { return eventData; } -function rootClickEvent(name: string) { - return function (event) { - if (event.button !== 0) { - // Firefox incorrectly triggers click event for mid/right mouse buttons. - // This bug has been active for 17 years. - // https://bugzilla.mozilla.org/show_bug.cgi?id=184051 - event.stopPropagation(); - return; - } - - dispatchEvents(event, true, name, extendEventProperties(event)); - }; -} - function rootEvent(name: string) { + const isClick = name === 'onClick' || name === 'onDblClick'; return function (event: SemiSyntheticEvent) { - dispatchEvents(event, false, name, extendEventProperties(event)); + dispatchEvents(event, isClick, name, extendEventProperties(event)); }; } function attachEventToDocument( name: string, ): (event: SemiSyntheticEvent) => void { - const attachedEvent = - name === 'onClick' || name === 'onDblClick' - ? rootClickEvent(name) - : rootEvent(name); - + const attachedEvent = rootEvent(name); + // @ts-expect-error TODO: FIXME document.addEventListener(normalizeEventName(name), attachedEvent); From 9d313ff07bf52872efffa4125a29c7a53fe6dc26 Mon Sep 17 00:00:00 2001 From: Sebastian Ware Date: Mon, 4 Dec 2023 18:10:00 +0100 Subject: [PATCH 2/2] Fixed linting errors --- packages/inferno/src/DOM/events/delegation.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/inferno/src/DOM/events/delegation.ts b/packages/inferno/src/DOM/events/delegation.ts index 6e81dbcd1..a2db5387b 100644 --- a/packages/inferno/src/DOM/events/delegation.ts +++ b/packages/inferno/src/DOM/events/delegation.ts @@ -174,7 +174,7 @@ function extendEventProperties(event): IEventData { return eventData; } -function rootEvent(name: string) { +function rootEvent(name: string): (event: SemiSyntheticEvent) => void { const isClick = name === 'onClick' || name === 'onDblClick'; return function (event: SemiSyntheticEvent) { dispatchEvents(event, isClick, name, extendEventProperties(event)); @@ -185,7 +185,6 @@ function attachEventToDocument( name: string, ): (event: SemiSyntheticEvent) => void { const attachedEvent = rootEvent(name); - // @ts-expect-error TODO: FIXME document.addEventListener(normalizeEventName(name), attachedEvent);