diff --git a/packages/react-dom-bindings/src/events/SyntheticEvent.js b/packages/react-dom-bindings/src/events/SyntheticEvent.js index 1fa5dafba11b..6e7fd585e7c9 100644 --- a/packages/react-dom-bindings/src/events/SyntheticEvent.js +++ b/packages/react-dom-bindings/src/events/SyntheticEvent.js @@ -609,6 +609,7 @@ const ToggleEventInterface: EventInterfaceType = { ...EventInterface, newState: 0, oldState: 0, + source: 0, }; export const SyntheticToggleEvent: $FlowFixMe = createSyntheticEvent(ToggleEventInterface); diff --git a/packages/react-dom/src/events/plugins/__tests__/SimpleEventPlugin-test.js b/packages/react-dom/src/events/plugins/__tests__/SimpleEventPlugin-test.js index f14fcab168b9..eb8532e22de8 100644 --- a/packages/react-dom/src/events/plugins/__tests__/SimpleEventPlugin-test.js +++ b/packages/react-dom/src/events/plugins/__tests__/SimpleEventPlugin-test.js @@ -15,6 +15,7 @@ class ToggleEvent extends Event { super(type, eventInit); this.newState = eventInit.newState; this.oldState = eventInit.oldState; + this.source = eventInit.source; } } @@ -623,4 +624,39 @@ describe('SimpleEventPlugin', function () { const event = onSubmit.mock.calls[0][0]; expect(event.submitter).toBe(submitter); }); + + it('includes the source in toggle events', async function () { + container = document.createElement('div'); + + const onToggle = jest.fn(); + const root = ReactDOMClient.createRoot(container); + await act(() => { + root.render( + <> + +