Re-added toggle event to non-delegated events (#19465)
Dominic Gannaway committed
Jul 27, 2020 at 16:58 UTC
217ecf581bb1e62dacafb3125b9d92b3346a3fa8
2 files changed
+14
-3
packages/react-dom/src/__tests__/ReactDOMEventListener-test.js
+10
-1
@@ -542,6 +542,7 @@ describe('ReactDOMEventListener', () => {
542
const onScroll = jest.fn();
543
const onCancel = jest.fn();
544
const onClose = jest.fn();
545
+ const onToggle = jest.fn();
546
document.body.appendChild(container);
547
try {
548
ReactDOM.render(
@@ -549,13 +550,15 @@ describe('ReactDOMEventListener', () => {
550
onPlay={onPlay}
551
onScroll={onScroll}
552
onCancel={onCancel}
552
- onClose={onClose}>
553
+ onClose={onClose}
554
+ onToggle={onToggle}>
555
<div
556
ref={ref}
557
onPlay={onPlay}
558
onScroll={onScroll}
559
onCancel={onCancel}
560
onClose={onClose}
561
+ onToggle={onToggle}
562
/>
563
</div>,
564
container,
@@ -580,12 +583,18 @@ describe('ReactDOMEventListener', () => {
583
bubbles: false,
584
}),
585
);
586
+ ref.current.dispatchEvent(
587
+ new Event('toggle', {
588
+ bubbles: false,
589
+ }),
590
+ );
591
// Regression test: ensure we still emulate bubbling with non-bubbling
592
// media
593
expect(onPlay).toHaveBeenCalledTimes(2);
594
expect(onScroll).toHaveBeenCalledTimes(2);
595
expect(onCancel).toHaveBeenCalledTimes(2);
596
expect(onClose).toHaveBeenCalledTimes(2);
597
+ expect(onToggle).toHaveBeenCalledTimes(2);
598
} finally {
599
document.body.removeChild(container);
600
}
packages/react-dom/src/events/DOMPluginEventSystem.js
+4
-2
@@ -68,6 +68,7 @@ import {
68
TOP_PLAYING,
69
TOP_CLICK,
70
TOP_SELECTION_CHANGE,
71
+ TOP_TOGGLE,
72
getRawEventName,
73
} from './DOMTopLevelEventTypes';
74
import {
@@ -239,11 +240,12 @@ export const mediaEventTypes = [
240
// set them on the actual target element itself. This is primarily
241
// because these events do not consistently bubble in the DOM.
242
export const nonDelegatedEvents: Set<DOMTopLevelEventType> = new Set([
242
- TOP_SCROLL,
243
- TOP_LOAD,
243
TOP_CANCEL,
244
TOP_CLOSE,
245
TOP_INVALID,
246
+ TOP_LOAD,
247
+ TOP_SCROLL,
248
+ TOP_TOGGLE,
249
// In order to reduce bytes, we insert the above array of media events
250
// into this Set. Note: the "error" event isn't an exclusive media event,
251
// and can occur on other elements too. Rather than duplicate that event,