Skip to content

Commit aac177c

Browse files
authored
Support beforetoggle/toggle events for dialog (#32479)
1 parent 6b1ae49 commit aac177c

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

packages/react-dom-bindings/src/client/ReactDOMComponent.js

+2
Original file line numberDiff line numberDiff line change
@@ -1280,6 +1280,8 @@ export function setInitialProperties(
12801280
return;
12811281
}
12821282
case 'dialog': {
1283+
listenToNonDelegatedEvent('beforetoggle', domElement);
1284+
listenToNonDelegatedEvent('toggle', domElement);
12831285
listenToNonDelegatedEvent('cancel', domElement);
12841286
listenToNonDelegatedEvent('close', domElement);
12851287
break;

packages/react-dom/src/__tests__/ReactDOMEventPropagation-test.js

+32
Original file line numberDiff line numberDiff line change
@@ -1302,6 +1302,38 @@ describe('ReactDOMEventListener', () => {
13021302
});
13031303
});
13041304

1305+
it('onBeforeToggle Dialog API', async () => {
1306+
await testEmulatedBubblingEvent({
1307+
type: 'dialog',
1308+
reactEvent: 'onBeforeToggle',
1309+
reactEventType: 'beforetoggle',
1310+
nativeEvent: 'beforetoggle',
1311+
dispatch(node) {
1312+
const e = new Event('beforetoggle', {
1313+
bubbles: false,
1314+
cancelable: true,
1315+
});
1316+
node.dispatchEvent(e);
1317+
},
1318+
});
1319+
});
1320+
1321+
it('onToggle Dialog API', async () => {
1322+
await testEmulatedBubblingEvent({
1323+
type: 'dialog',
1324+
reactEvent: 'onToggle',
1325+
reactEventType: 'toggle',
1326+
nativeEvent: 'toggle',
1327+
dispatch(node) {
1328+
const e = new Event('toggle', {
1329+
bubbles: false,
1330+
cancelable: true,
1331+
});
1332+
node.dispatchEvent(e);
1333+
},
1334+
});
1335+
});
1336+
13051337
it('onVolumeChange', async () => {
13061338
await testEmulatedBubblingEvent({
13071339
type: 'video',

0 commit comments

Comments
 (0)